/*  Prototype JavaScript framework,version 1.6.0.3
*  (c) 2005-2008 Sam Stephenson
*
*  Prototype is freely distributable under the terms of an MIT-style license.
*  For details,see the Prototype web site: http://www.prototypejs.org/
*
*--------------------------------------------------------------------------*/
var Prototype = {
Version: '1.6.0.3',Browser: {
IE:     !!(window.attachEvent &&
navigator.userAgent.indexOf('Opera') === -1),Opera:  navigator.userAgent.indexOf('Opera') > -1,WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,Gecko:  navigator.userAgent.indexOf('Gecko') > -1 &&
navigator.userAgent.indexOf('KHTML') === -1,MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
},BrowserFeatures: {
XPath: !!document.evaluate,SelectorsAPI: !!document.querySelector,ElementExtensions: !!window.HTMLElement,SpecificElementExtensions:
document.createElement('div')['__proto__'] &&
document.createElement('div')['__proto__'] !==
document.createElement('form')['__proto__']
},ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction: function() { },K: function(x) { return x }
};
if (Prototype.Browser.MobileSafari)
Prototype.BrowserFeatures.SpecificElementExtensions = false;
/* Based on Alex Arnell's inheritance implementation. */
var Class = {
create: function() {
var parent = null,properties = $A(arguments);
if (Object.isFunction(properties[0]))
parent = properties.shift();
function klass() {
this.initialize.apply(this,arguments);
}
Object.extend(klass,Class.Methods);
klass.superclass = parent;
klass.subclasses = [];
if (parent) {
var subclass = function() { };
subclass.prototype = parent.prototype;
klass.prototype = new subclass;
parent.subclasses.push(klass);
}
for (var i = 0; i < properties.length; i++)
klass.addMethods(properties[i]);
if (!klass.prototype.initialize)
klass.prototype.initialize = Prototype.emptyFunction;
klass.prototype.constructor = klass;
return klass;
}
};
Class.Methods = {
addMethods: function(source) {
var ancestor   = this.superclass && this.superclass.prototype;
var properties = Object.keys(source);
if (!Object.keys({ toString: true }).length)
properties.push("toString","valueOf");
for (var i = 0,length = properties.length; i < length; i++) {
var property = properties[i],value = source[property];
if (ancestor && Object.isFunction(value) &&
value.argumentNames().first() == "$super") {
var method = value;
value = (function(m) {
return function() { return ancestor[m].apply(this,arguments) };
})(property).wrap(method);
value.valueOf = method.valueOf.bind(method);
value.toString = method.toString.bind(method);
}
this.prototype[property] = value;
}
return this;
}
};
var Abstract = { };
Object.extend = function(destination,source) {
for (var property in source)
destination[property] = source[property];
return destination;
};
Object.extend(Object,{
inspect: function(object) {
try {
if (Object.isUndefined(object)) return 'undefined';
if (object === null) return 'null';
return object.inspect ? object.inspect() : String(object);
} catch (e) {
if (e instanceof RangeError) return '...';
throw e;
}
},toJSON: function(object) {
var type = typeof object;
switch (type) {
case 'undefined':
case 'function':
case 'unknown': return;
case 'boolean': return object.toString();
}
if (object === null) return 'null';
if (object.toJSON) return object.toJSON();
if (Object.isElement(object)) return;
var results = [];
for (var property in object) {
var value = Object.toJSON(object[property]);
if (!Object.isUndefined(value))
results.push(property.toJSON() + ': ' + value);
}
return '{' + results.join(',') + '}';
},toQueryString: function(object) {
return $H(object).toQueryString();
},toHTML: function(object) {
return object && object.toHTML ? object.toHTML() : String.interpret(object);
},keys: function(object) {
var keys = [];
for (var property in object)
keys.push(property);
return keys;
},values: function(object) {
var values = [];
for (var property in object)
values.push(object[property]);
return values;
},clone: function(object) {
return Object.extend({ },object);
},isElement: function(object) {
return !!(object && object.nodeType == 1);
},isArray: function(object) {
return object != null && typeof object == "object" &&
'splice' in object && 'join' in object;
},isHash: function(object) {
return object instanceof Hash;
},isFunction: function(object) {
return typeof object == "function";
},isString: function(object) {
return typeof object == "string";
},isNumber: function(object) {
return typeof object == "number";
},isUndefined: function(object) {
return typeof object == "undefined";
}
});
Object.extend(Function.prototype,{
argumentNames: function() {
var names = this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1]
.replace(/\s+/g,'').split(',');
return names.length == 1 && !names[0] ? [] : names;
},bind: function() {
if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;
var __method = this,args = $A(arguments),object = args.shift();
return function() {
return __method.apply(object,args.concat($A(arguments)));
}
},bindAsEventListener: function() {
var __method = this,args = $A(arguments),object = args.shift();
return function(event) {
return __method.apply(object,[event || window.event].concat(args));
}
},curry: function() {
if (!arguments.length) return this;
var __method = this,args = $A(arguments);
return function() {
return __method.apply(this,args.concat($A(arguments)));
}
},delay: function() {
var __method = this,args = $A(arguments),timeout = args.shift() * 1000;
return window.setTimeout(function() {
return __method.apply(__method,args);
},timeout);
},defer: function() {
var args = [0.01].concat($A(arguments));
return this.delay.apply(this,args);
},wrap: function(wrapper) {
var __method = this;
return function() {
return wrapper.apply(this,[__method.bind(this)].concat($A(arguments)));
}
},methodize: function() {
if (this._methodized) return this._methodized;
var __method = this;
return this._methodized = function() {
return __method.apply(null,[this].concat($A(arguments)));
};
}
});
Date.prototype.toJSON = function() {
return '"' + this.getUTCFullYear() + '-' +
(this.getUTCMonth() + 1).toPaddedString(2) + '-' +
this.getUTCDate().toPaddedString(2) + 'T' +
this.getUTCHours().toPaddedString(2) + ':' +
this.getUTCMinutes().toPaddedString(2) + ':' +
this.getUTCSeconds().toPaddedString(2) + 'Z"';
};
var Try = {
these: function() {
var returnValue;
for (var i = 0,length = arguments.length; i < length; i++) {
var lambda = arguments[i];
try {
returnValue = lambda();
break;
} catch (e) { }
}
return returnValue;
}
};
RegExp.prototype.match = RegExp.prototype.test;
RegExp.escape = function(str) {
return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g,'\\$1');
};
/*--------------------------------------------------------------------------*/
var PeriodicalExecuter = Class.create({
initialize: function(callback,frequency) {
this.callback = callback;
this.frequency = frequency;
this.currentlyExecuting = false;
this.registerCallback();
},registerCallback: function() {
this.timer = setInterval(this.onTimerEvent.bind(this),this.frequency * 1000);
},execute: function() {
this.callback(this);
},stop: function() {
if (!this.timer) return;
clearInterval(this.timer);
this.timer = null;
},onTimerEvent: function() {
if (!this.currentlyExecuting) {
try {
this.currentlyExecuting = true;
this.execute();
} finally {
this.currentlyExecuting = false;
}
}
}
});
Object.extend(String,{
interpret: function(value) {
return value == null ? '' : String(value);
},specialChar: {
'\b': '\\b','\t': '\\t','\n': '\\n','\f': '\\f','\r': '\\r','\\': '\\\\'
}
});
Object.extend(String.prototype,{
gsub: function(pattern,replacement) {
var result = '',source = this,match;
replacement = arguments.callee.prepareReplacement(replacement);
while (source.length > 0) {
if (match = source.match(pattern)) {
result += source.slice(0,match.index);
result += String.interpret(replacement(match));
source  = source.slice(match.index + match[0].length);
} else {
result += source,source = '';
}
}
return result;
},sub: function(pattern,replacement,count) {
replacement = this.gsub.prepareReplacement(replacement);
count = Object.isUndefined(count) ? 1 : count;
return this.gsub(pattern,function(match) {
if (--count < 0) return match[0];
return replacement(match);
});
},scan: function(pattern,iterator) {
this.gsub(pattern,iterator);
return String(this);
},truncate: function(length,truncation) {
length = length || 30;
truncation = Object.isUndefined(truncation) ? '...' : truncation;
return this.length > length ?
this.slice(0,length - truncation.length) + truncation : String(this);
},strip: function() {
return this.replace(/^\s+/,'').replace(/\s+$/,'');
},stripTags: function() {
return this.replace(/<\/?[^>]+>/gi,'');
},stripScripts: function() {
return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'');
},extractScripts: function() {
var matchAll = new RegExp(Prototype.ScriptFragment,'img');
var matchOne = new RegExp(Prototype.ScriptFragment,'im');
return (this.match(matchAll) || []).map(function(scriptTag) {
return (scriptTag.match(matchOne) || ['',''])[1];
});
},evalScripts: function() {
return this.extractScripts().map(function(script) { return eval(script) });
},escapeHTML: function() {
var self = arguments.callee;
self.text.data = this;
return self.div.innerHTML;
},unescapeHTML: function() {
var div = new Element('div');
div.innerHTML = this.stripTags();
return div.childNodes[0] ? (div.childNodes.length > 1 ?
$A(div.childNodes).inject('',function(memo,node) { return memo+node.nodeValue }) :
div.childNodes[0].nodeValue) : '';
},toQueryParams: function(separator) {
var match = this.strip().match(/([^?#]*)(#.*)?$/);
if (!match) return { };
return match[1].split(separator || '&').inject({ },function(hash,pair) {
if ((pair = pair.split('='))[0]) {
var key = decodeURIComponent(pair.shift());
var value = pair.length > 1 ? pair.join('=') : pair[0];
if (value != undefined) value = decodeURIComponent(value);
if (key in hash) {
if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
hash[key].push(value);
}
else hash[key] = value;
}
return hash;
});
},toArray: function() {
return this.split('');
},succ: function() {
return this.slice(0,this.length - 1) +
String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
},times: function(count) {
return count < 1 ? '' : new Array(count + 1).join(this);
},camelize: function() {
var parts = this.split('-'),len = parts.length;
if (len == 1) return parts[0];
var camelized = this.charAt(0) == '-'
? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
: parts[0];
for (var i = 1; i < len; i++)
camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
return camelized;
},capitalize: function() {
return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
},underscore: function() {
return this.gsub(/::/,'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
},dasherize: function() {
return this.gsub(/_/,'-');
},inspect: function(useDoubleQuotes) {
var escapedString = this.gsub(/[\x00-\x1f\\]/,function(match) {
var character = String.specialChar[match[0]];
return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2,16);
});
if (useDoubleQuotes) return '"' + escapedString.replace(/"/g,'\\"') + '"';
return "'" + escapedString.replace(/'/g,'\\\'') + "'";
},toJSON: function() {
return this.inspect(true);
},unfilterJSON: function(filter) {
return this.sub(filter || Prototype.JSONFilter,'#{1}');
},isJSON: function() {
var str = this;
if (str.blank()) return false;
str = this.replace(/\\./g,'@').replace(/"[^"\\\n\r]*"/g,'');
return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
},evalJSON: function(sanitize) {
var json = this.unfilterJSON();
try {
if (!sanitize || json.isJSON()) return eval('(' + json + ')');
} catch (e) { }
throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
},include: function(pattern) {
return this.indexOf(pattern) > -1;
},startsWith: function(pattern) {
return this.indexOf(pattern) === 0;
},endsWith: function(pattern) {
var d = this.length - pattern.length;
return d >= 0 && this.lastIndexOf(pattern) === d;
},empty: function() {
return this == '';
},blank: function() {
return /^\s*$/.test(this);
},interpolate: function(object,pattern) {
return new Template(this,pattern).evaluate(object);
}
});
if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype,{
escapeHTML: function() {
return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
},unescapeHTML: function() {
return this.stripTags().replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
}
});
String.prototype.gsub.prepareReplacement = function(replacement) {
if (Object.isFunction(replacement)) return replacement;
var template = new Template(replacement);
return function(match) { return template.evaluate(match) };
};
String.prototype.parseQuery = String.prototype.toQueryParams;
Object.extend(String.prototype.escapeHTML,{
div:  document.createElement('div'),text: document.createTextNode('')
});
String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text);
var Template = Class.create({
initialize: function(template,pattern) {
this.template = template.toString();
this.pattern = pattern || Template.Pattern;
},evaluate: function(object) {
if (Object.isFunction(object.toTemplateReplacements))
object = object.toTemplateReplacements();
return this.template.gsub(this.pattern,function(match) {
if (object == null) return '';
var before = match[1] || '';
if (before == '\\') return match[2];
var ctx = object,expr = match[3];
var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;
match = pattern.exec(expr);
if (match == null) return before;
while (match != null) {
var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]',']') : match[1];
ctx = ctx[comp];
if (null == ctx || '' == match[3]) break;
expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
match = pattern.exec(expr);
}
return before + String.interpret(ctx);
});
}
});
Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
var $break = { };
var Enumerable = {
each: function(iterator,context) {
var index = 0;
try {
this._each(function(value) {
iterator.call(context,value,index++);
});
} catch (e) {
if (e != $break) throw e;
}
return this;
},eachSlice: function(number,iterator,context) {
var index = -number,slices = [],array = this.toArray();
if (number < 1) return array;
while ((index += number) < array.length)
slices.push(array.slice(index,index+number));
return slices.collect(iterator,context);
},all: function(iterator,context) {
iterator = iterator || Prototype.K;
var result = true;
this.each(function(value,index) {
result = result && !!iterator.call(context,value,index);
if (!result) throw $break;
});
return result;
},any: function(iterator,context) {
iterator = iterator || Prototype.K;
var result = false;
this.each(function(value,index) {
if (result = !!iterator.call(context,value,index))
throw $break;
});
return result;
},collect: function(iterator,context) {
iterator = iterator || Prototype.K;
var results = [];
this.each(function(value,index) {
results.push(iterator.call(context,value,index));
});
return results;
},detect: function(iterator,context) {
var result;
this.each(function(value,index) {
if (iterator.call(context,value,index)) {
result = value;
throw $break;
}
});
return result;
},findAll: function(iterator,context) {
var results = [];
this.each(function(value,index) {
if (iterator.call(context,value,index))
results.push(value);
});
return results;
},grep: function(filter,iterator,context) {
iterator = iterator || Prototype.K;
var results = [];
if (Object.isString(filter))
filter = new RegExp(filter);
this.each(function(value,index) {
if (filter.match(value))
results.push(iterator.call(context,value,index));
});
return results;
},include: function(object) {
if (Object.isFunction(this.indexOf))
if (this.indexOf(object) != -1) return true;
var found = false;
this.each(function(value) {
if (value == object) {
found = true;
throw $break;
}
});
return found;
},inGroupsOf: function(number,fillWith) {
fillWith = Object.isUndefined(fillWith) ? null : fillWith;
return this.eachSlice(number,function(slice) {
while(slice.length < number) slice.push(fillWith);
return slice;
});
},inject: function(memo,iterator,context) {
this.each(function(value,index) {
memo = iterator.call(context,memo,value,index);
});
return memo;
},invoke: function(method) {
var args = $A(arguments).slice(1);
return this.map(function(value) {
return value[method].apply(value,args);
});
},max: function(iterator,context) {
iterator = iterator || Prototype.K;
var result;
this.each(function(value,index) {
value = iterator.call(context,value,index);
if (result == null || value >= result)
result = value;
});
return result;
},min: function(iterator,context) {
iterator = iterator || Prototype.K;
var result;
this.each(function(value,index) {
value = iterator.call(context,value,index);
if (result == null || value < result)
result = value;
});
return result;
},partition: function(iterator,context) {
iterator = iterator || Prototype.K;
var trues = [],falses = [];
this.each(function(value,index) {
(iterator.call(context,value,index) ?
trues : falses).push(value);
});
return [trues,falses];
},pluck: function(property) {
var results = [];
this.each(function(value) {
results.push(value[property]);
});
return results;
},reject: function(iterator,context) {
var results = [];
this.each(function(value,index) {
if (!iterator.call(context,value,index))
results.push(value);
});
return results;
},sortBy: function(iterator,context) {
return this.map(function(value,index) {
return {
value: value,criteria: iterator.call(context,value,index)
};
}).sort(function(left,right) {
var a = left.criteria,b = right.criteria;
return a < b ? -1 : a > b ? 1 : 0;
}).pluck('value');
},toArray: function() {
return this.map();
},zip: function() {
var iterator = Prototype.K,args = $A(arguments);
if (Object.isFunction(args.last()))
iterator = args.pop();
var collections = [this].concat(args).map($A);
return this.map(function(value,index) {
return iterator(collections.pluck(index));
});
},size: function() {
return this.toArray().length;
},inspect: function() {
return '#<Enumerable:' + this.toArray().inspect() + '>';
}
};
Object.extend(Enumerable,{
map:     Enumerable.collect,find:    Enumerable.detect,select:  Enumerable.findAll,filter:  Enumerable.findAll,member:  Enumerable.include,entries: Enumerable.toArray,every:   Enumerable.all,some:    Enumerable.any
});
function $A(iterable) {
if (!iterable) return [];
if (iterable.toArray) return iterable.toArray();
var length = iterable.length || 0,results = new Array(length);
while (length--) results[length] = iterable[length];
return results;
}
if (Prototype.Browser.WebKit) {
$A = function(iterable) {
if (!iterable) return [];
// In Safari,only use the `toArray` method if it's not a NodeList.
// A NodeList is a function,has an function `item` property,and a numeric
// `length` property. Adapted from Google Doctype.
if (!(typeof iterable === 'function' && typeof iterable.length ===
'number' && typeof iterable.item === 'function') && iterable.toArray)
return iterable.toArray();
var length = iterable.length || 0,results = new Array(length);
while (length--) results[length] = iterable[length];
return results;
};
}
Array.from = $A;
Object.extend(Array.prototype,Enumerable);
if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse;
Object.extend(Array.prototype,{
_each: function(iterator) {
for (var i = 0,length = this.length; i < length; i++)
iterator(this[i]);
},clear: function() {
this.length = 0;
return this;
},first: function() {
return this[0];
},last: function() {
return this[this.length - 1];
},compact: function() {
return this.select(function(value) {
return value != null;
});
},flatten: function() {
return this.inject([],function(array,value) {
return array.concat(Object.isArray(value) ?
value.flatten() : [value]);
});
},without: function() {
var values = $A(arguments);
return this.select(function(value) {
return !values.include(value);
});
},reverse: function(inline) {
return (inline !== false ? this : this.toArray())._reverse();
},reduce: function() {
return this.length > 1 ? this : this[0];
},uniq: function(sorted) {
return this.inject([],function(array,value,index) {
if (0 == index || (sorted ? array.last() != value : !array.include(value)))
array.push(value);
return array;
});
},intersect: function(array) {
return this.uniq().findAll(function(item) {
return array.detect(function(value) { return item === value });
});
},clone: function() {
return [].concat(this);
},size: function() {
return this.length;
},inspect: function() {
return '[' + this.map(Object.inspect).join(',') + ']';
},toJSON: function() {
var results = [];
this.each(function(object) {
var value = Object.toJSON(object);
if (!Object.isUndefined(value)) results.push(value);
});
return '[' + results.join(',') + ']';
}
});
// use native browser JS 1.6 implementation if available
if (Object.isFunction(Array.prototype.forEach))
Array.prototype._each = Array.prototype.forEach;
if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item,i) {
i || (i = 0);
var length = this.length;
if (i < 0) i = length + i;
for (; i < length; i++)
if (this[i] === item) return i;
return -1;
};
if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item,i) {
i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
var n = this.slice(0,i).reverse().indexOf(item);
return (n < 0) ? n : i - n - 1;
};
Array.prototype.toArray = Array.prototype.clone;
function $w(string) {
if (!Object.isString(string)) return [];
string = string.strip();
return string ? string.split(/\s+/) : [];
}
if (Prototype.Browser.Opera){
Array.prototype.concat = function() {
var array = [];
for (var i = 0,length = this.length; i < length; i++) array.push(this[i]);
for (var i = 0,length = arguments.length; i < length; i++) {
if (Object.isArray(arguments[i])) {
for (var j = 0,arrayLength = arguments[i].length; j < arrayLength; j++)
array.push(arguments[i][j]);
} else {
array.push(arguments[i]);
}
}
return array;
};
}
Object.extend(Number.prototype,{
toColorPart: function() {
return this.toPaddedString(2,16);
},succ: function() {
return this + 1;
},times: function(iterator,context) {
$R(0,this,true).each(iterator,context);
return this;
},toPaddedString: function(length,radix) {
var string = this.toString(radix || 10);
return '0'.times(length - string.length) + string;
},toJSON: function() {
return isFinite(this) ? this.toString() : 'null';
}
});
$w('abs round ceil floor').each(function(method){
Number.prototype[method] = Math[method].methodize();
});
function $H(object) {
return new Hash(object);
};
var Hash = Class.create(Enumerable,(function() {
function toQueryPair(key,value) {
if (Object.isUndefined(value)) return key;
return key + '=' + encodeURIComponent(String.interpret(value));
}
return {
initialize: function(object) {
this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
},_each: function(iterator) {
for (var key in this._object) {
var value = this._object[key],pair = [key,value];
pair.key = key;
pair.value = value;
iterator(pair);
}
},set: function(key,value) {
return this._object[key] = value;
},get: function(key) {
// simulating poorly supported hasOwnProperty
if (this._object[key] !== Object.prototype[key])
return this._object[key];
},unset: function(key) {
var value = this._object[key];
delete this._object[key];
return value;
},toObject: function() {
return Object.clone(this._object);
},keys: function() {
return this.pluck('key');
},values: function() {
return this.pluck('value');
},index: function(value) {
var match = this.detect(function(pair) {
return pair.value === value;
});
return match && match.key;
},merge: function(object) {
return this.clone().update(object);
},update: function(object) {
return new Hash(object).inject(this,function(result,pair) {
result.set(pair.key,pair.value);
return result;
});
},toQueryString: function() {
return this.inject([],function(results,pair) {
var key = encodeURIComponent(pair.key),values = pair.value;
if (values && typeof values == 'object') {
if (Object.isArray(values))
return results.concat(values.map(toQueryPair.curry(key)));
} else results.push(toQueryPair(key,values));
return results;
}).join('&');
},inspect: function() {
return '#<Hash:{' + this.map(function(pair) {
return pair.map(Object.inspect).join(': ');
}).join(',') + '}>';
},toJSON: function() {
return Object.toJSON(this.toObject());
},clone: function() {
return new Hash(this);
}
}
})());
Hash.prototype.toTemplateReplacements = Hash.prototype.toObject;
Hash.from = $H;
var ObjectRange = Class.create(Enumerable,{
initialize: function(start,end,exclusive) {
this.start = start;
this.end = end;
this.exclusive = exclusive;
},_each: function(iterator) {
var value = this.start;
while (this.include(value)) {
iterator(value);
value = value.succ();
}
},include: function(value) {
if (value < this.start)
return false;
if (this.exclusive)
return value < this.end;
return value <= this.end;
}
});
var $R = function(start,end,exclusive) {
return new ObjectRange(start,end,exclusive);
};
var Ajax = {
getTransport: function() {
return Try.these(
function() {return new XMLHttpRequest()},function() {return new ActiveXObject('Msxml2.XMLHTTP')},function() {return new ActiveXObject('Microsoft.XMLHTTP')}
) || false;
},activeRequestCount: 0
};
Ajax.Responders = {
responders: [],_each: function(iterator) {
this.responders._each(iterator);
},register: function(responder) {
if (!this.include(responder))
this.responders.push(responder);
},unregister: function(responder) {
this.responders = this.responders.without(responder);
},dispatch: function(callback,request,transport,json) {
this.each(function(responder) {
if (Object.isFunction(responder[callback])) {
try {
responder[callback].apply(responder,[request,transport,json]);
} catch (e) { }
}
});
}
};
Object.extend(Ajax.Responders,Enumerable);
Ajax.Responders.register({
onCreate:   function() { Ajax.activeRequestCount++ },onComplete: function() { Ajax.activeRequestCount-- }
});
Ajax.Base = Class.create({
initialize: function(options) {
this.options = {
method:       'post',asynchronous: true,contentType:  'application/x-www-form-urlencoded',encoding:     'UTF-8',parameters:   '',evalJSON:     true,evalJS:       true
};
Object.extend(this.options,options || { });
this.options.method = this.options.method.toLowerCase();
if (Object.isString(this.options.parameters))
this.options.parameters = this.options.parameters.toQueryParams();
else if (Object.isHash(this.options.parameters))
this.options.parameters = this.options.parameters.toObject();
}
});
Ajax.Request = Class.create(Ajax.Base,{
_complete: false,initialize: function($super,url,options) {
$super(options);
this.transport = Ajax.getTransport();
this.request(url);
},request: function(url) {
this.url = url;
this.method = this.options.method;
var params = Object.clone(this.options.parameters);
if (!['get','post'].include(this.method)) {
// simulate other verbs over post
params['_method'] = this.method;
this.method = 'post';
}
this.parameters = params;
if (params = Object.toQueryString(params)) {
// when GET,append parameters to URL
if (this.method == 'get')
this.url += (this.url.include('?') ? '&' : '?') + params;
else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
params += '&_=';
}
try {
var response = new Ajax.Response(this);
if (this.options.onCreate) this.options.onCreate(response);
Ajax.Responders.dispatch('onCreate',this,response);
this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);
if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);
this.transport.onreadystatechange = this.onStateChange.bind(this);
this.setRequestHeaders();
this.body = this.method == 'post' ? (this.options.postBody || params) : null;
this.transport.send(this.body);
/* Force Firefox to handle ready state 4 for synchronous requests */
if (!this.options.asynchronous && this.transport.overrideMimeType)
this.onStateChange();
}
catch (e) {
this.dispatchException(e);
}
},onStateChange: function() {
var readyState = this.transport.readyState;
if (readyState > 1 && !((readyState == 4) && this._complete))
this.respondToReadyState(this.transport.readyState);
},setRequestHeaders: function() {
var headers = {
'X-Requested-With': 'XMLHttpRequest','X-Prototype-Version': Prototype.Version,'Accept': 'text/javascript,text/html,application/xml,text/xml,*/*'
};
if (this.method == 'post') {
headers['Content-type'] = this.options.contentType +
(this.options.encoding ? '; charset=' + this.options.encoding : '');
/* Force "Connection: close" for older Mozilla browsers to work
* around a bug where XMLHttpRequest sends an incorrect
* Content-length header. See Mozilla Bugzilla #246651.
*/
if (this.transport.overrideMimeType &&
(navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
headers['Connection'] = 'close';
}
// user-defined headers
if (typeof this.options.requestHeaders == 'object') {
var extras = this.options.requestHeaders;
if (Object.isFunction(extras.push))
for (var i = 0,length = extras.length; i < length; i += 2)
headers[extras[i]] = extras[i+1];
else
$H(extras).each(function(pair) { headers[pair.key] = pair.value });
}
for (var name in headers)
this.transport.setRequestHeader(name,headers[name]);
},success: function() {
var status = this.getStatus();
return !status || (status >= 200 && status < 300);
},getStatus: function() {
try {
return this.transport.status || 0;
} catch (e) { return 0 }
},respondToReadyState: function(readyState) {
var state = Ajax.Request.Events[readyState],response = new Ajax.Response(this);
if (state == 'Complete') {
try {
this._complete = true;
(this.options['on' + response.status]
|| this.options['on' + (this.success() ? 'Success' : 'Failure')]
|| Prototype.emptyFunction)(response,response.headerJSON);
} catch (e) {
this.dispatchException(e);
}
var contentType = response.getHeader('Content-type');
if (this.options.evalJS == 'force'
|| (this.options.evalJS && this.isSameOrigin() && contentType
&& contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
this.evalResponse();
}
try {
(this.options['on' + state] || Prototype.emptyFunction)(response,response.headerJSON);
Ajax.Responders.dispatch('on' + state,this,response,response.headerJSON);
} catch (e) {
this.dispatchException(e);
}
if (state == 'Complete') {
// avoid memory leak in MSIE: clean up
this.transport.onreadystatechange = Prototype.emptyFunction;
}
},isSameOrigin: function() {
var m = this.url.match(/^\s*https?:\/\/[^\/]*/);
return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({
protocol: location.protocol,domain: document.domain,port: location.port ? ':' + location.port : ''
}));
},getHeader: function(name) {
try {
return this.transport.getResponseHeader(name) || null;
} catch (e) { return null }
},evalResponse: function() {
try {
return eval((this.transport.responseText || '').unfilterJSON());
} catch (e) {
this.dispatchException(e);
}
},dispatchException: function(exception) {
(this.options.onException || Prototype.emptyFunction)(this,exception);
Ajax.Responders.dispatch('onException',this,exception);
}
});
Ajax.Request.Events =
['Uninitialized','Loading','Loaded','Interactive','Complete'];
Ajax.Response = Class.create({
initialize: function(request){
this.request = request;
var transport  = this.transport  = request.transport,readyState = this.readyState = transport.readyState;
if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
this.status       = this.getStatus();
this.statusText   = this.getStatusText();
this.responseText = String.interpret(transport.responseText);
this.headerJSON   = this._getHeaderJSON();
}
if(readyState == 4) {
var xml = transport.responseXML;
this.responseXML  = Object.isUndefined(xml) ? null : xml;
this.responseJSON = this._getResponseJSON();
}
},status:      0,statusText: '',getStatus: Ajax.Request.prototype.getStatus,getStatusText: function() {
try {
return this.transport.statusText || '';
} catch (e) { return '' }
},getHeader: Ajax.Request.prototype.getHeader,getAllHeaders: function() {
try {
return this.getAllResponseHeaders();
} catch (e) { return null }
},getResponseHeader: function(name) {
return this.transport.getResponseHeader(name);
},getAllResponseHeaders: function() {
return this.transport.getAllResponseHeaders();
},_getHeaderJSON: function() {
var json = this.getHeader('X-JSON');
if (!json) return null;
json = decodeURIComponent(escape(json));
try {
return json.evalJSON(this.request.options.sanitizeJSON ||
!this.request.isSameOrigin());
} catch (e) {
this.request.dispatchException(e);
}
},_getResponseJSON: function() {
var options = this.request.options;
if (!options.evalJSON || (options.evalJSON != 'force' &&
!(this.getHeader('Content-type') || '').include('application/json')) ||
this.responseText.blank())
return null;
try {
return this.responseText.evalJSON(options.sanitizeJSON ||
!this.request.isSameOrigin());
} catch (e) {
this.request.dispatchException(e);
}
}
});
Ajax.Updater = Class.create(Ajax.Request,{
initialize: function($super,container,url,options) {
this.container = {
success: (container.success || container),failure: (container.failure || (container.success ? null : container))
};
options = Object.clone(options);
var onComplete = options.onComplete;
options.onComplete = (function(response,json) {
this.updateContent(response.responseText);
if (Object.isFunction(onComplete)) onComplete(response,json);
}).bind(this);
$super(url,options);
},updateContent: function(responseText) {
var receiver = this.container[this.success() ? 'success' : 'failure'],options = this.options;
if (!options.evalScripts) responseText = responseText.stripScripts();
if (receiver = $(receiver)) {
if (options.insertion) {
if (Object.isString(options.insertion)) {
var insertion = { }; insertion[options.insertion] = responseText;
receiver.insert(insertion);
}
else options.insertion(receiver,responseText);
}
else receiver.update(responseText);
}
}
});
Ajax.PeriodicalUpdater = Class.create(Ajax.Base,{
initialize: function($super,container,url,options) {
$super(options);
this.onComplete = this.options.onComplete;
this.frequency = (this.options.frequency || 2);
this.decay = (this.options.decay || 1);
this.updater = { };
this.container = container;
this.url = url;
this.start();
},start: function() {
this.options.onComplete = this.updateComplete.bind(this);
this.onTimerEvent();
},stop: function() {
this.updater.options.onComplete = undefined;
clearTimeout(this.timer);
(this.onComplete || Prototype.emptyFunction).apply(this,arguments);
},updateComplete: function(response) {
if (this.options.decay) {
this.decay = (response.responseText == this.lastText ?
this.decay * this.options.decay : 1);
this.lastText = response.responseText;
}
this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
},onTimerEvent: function() {
this.updater = new Ajax.Updater(this.container,this.url,this.options);
}
});
function $(element) {
if (arguments.length > 1) {
for (var i = 0,elements = [],length = arguments.length; i < length; i++)
elements.push($(arguments[i]));
return elements;
}
if (Object.isString(element))
element = document.getElementById(element);
return Element.extend(element);
}
if (Prototype.BrowserFeatures.XPath) {
document._getElementsByXPath = function(expression,parentElement) {
var results = [];
var query = document.evaluate(expression,$(parentElement) || document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0,length = query.snapshotLength; i < length; i++)
results.push(Element.extend(query.snapshotItem(i)));
return results;
};
}
/*--------------------------------------------------------------------------*/
if (!window.Node) var Node = { };
if (!Node.ELEMENT_NODE) {
// DOM level 2 ECMAScript Language Binding
Object.extend(Node,{
ELEMENT_NODE: 1,ATTRIBUTE_NODE: 2,TEXT_NODE: 3,CDATA_SECTION_NODE: 4,ENTITY_REFERENCE_NODE: 5,ENTITY_NODE: 6,PROCESSING_INSTRUCTION_NODE: 7,COMMENT_NODE: 8,DOCUMENT_NODE: 9,DOCUMENT_TYPE_NODE: 10,DOCUMENT_FRAGMENT_NODE: 11,NOTATION_NODE: 12
});
}
(function() {
var element = this.Element;
this.Element = function(tagName,attributes) {
attributes = attributes || { };
tagName = tagName.toLowerCase();
var cache = Element.cache;
if (Prototype.Browser.IE && attributes.name) {
tagName = '<' + tagName + ' name="' + attributes.name + '">';
delete attributes.name;
return Element.writeAttribute(document.createElement(tagName),attributes);
}
if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));
return Element.writeAttribute(cache[tagName].cloneNode(false),attributes);
};
Object.extend(this.Element,element || { });
if (element) this.Element.prototype = element.prototype;
}).call(window);
Element.cache = { };
Element.Methods = {
visible: function(element) {
return $(element).style.display != 'none';
},toggle: function(element) {
element = $(element);
Element[Element.visible(element) ? 'hide' : 'show'](element);
return element;
},hide: function(element) {
element = $(element);
element.style.display = 'none';
return element;
},show: function(element) {
element = $(element);
element.style.display = '';
return element;
},remove: function(element) {
element = $(element);
element.parentNode.removeChild(element);
return element;
},update: function(element,content) {
element = $(element);
if (content && content.toElement) content = content.toElement();
if (Object.isElement(content)) return element.update().insert(content);
content = Object.toHTML(content);
element.innerHTML = content.stripScripts();
content.evalScripts.bind(content).defer();
return element;
},replace: function(element,content) {
element = $(element);
if (content && content.toElement) content = content.toElement();
else if (!Object.isElement(content)) {
content = Object.toHTML(content);
var range = element.ownerDocument.createRange();
range.selectNode(element);
content.evalScripts.bind(content).defer();
content = range.createContextualFragment(content.stripScripts());
}
element.parentNode.replaceChild(content,element);
return element;
},insert: function(element,insertions) {
element = $(element);
if (Object.isString(insertions) || Object.isNumber(insertions) ||
Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
insertions = {bottom:insertions};
var content,insert,tagName,childNodes;
for (var position in insertions) {
content  = insertions[position];
position = position.toLowerCase();
insert = Element._insertionTranslations[position];
if (content && content.toElement) content = content.toElement();
if (Object.isElement(content)) {
insert(element,content);
continue;
}
content = Object.toHTML(content);
tagName = ((position == 'before' || position == 'after')
? element.parentNode : element).tagName.toUpperCase();
childNodes = Element._getContentFromAnonymousElement(tagName,content.stripScripts());
if (position == 'top' || position == 'after') childNodes.reverse();
childNodes.each(insert.curry(element));
content.evalScripts.bind(content).defer();
}
return element;
},wrap: function(element,wrapper,attributes) {
element = $(element);
if (Object.isElement(wrapper))
$(wrapper).writeAttribute(attributes || { });
else if (Object.isString(wrapper)) wrapper = new Element(wrapper,attributes);
else wrapper = new Element('div',wrapper);
if (element.parentNode)
element.parentNode.replaceChild(wrapper,element);
wrapper.appendChild(element);
return wrapper;
},inspect: function(element) {
element = $(element);
var result = '<' + element.tagName.toLowerCase();
$H({'id': 'id','className': 'class'}).each(function(pair) {
var property = pair.first(),attribute = pair.last();
var value = (element[property] || '').toString();
if (value) result += ' ' + attribute + '=' + value.inspect(true);
});
return result + '>';
},recursivelyCollect: function(element,property) {
element = $(element);
var elements = [];
while (element = element[property])
if (element.nodeType == 1)
elements.push(Element.extend(element));
return elements;
},ancestors: function(element) {
return $(element).recursivelyCollect('parentNode');
},descendants: function(element) {
return $(element).select("*");
},firstDescendant: function(element) {
element = $(element).firstChild;
while (element && element.nodeType != 1) element = element.nextSibling;
return $(element);
},immediateDescendants: function(element) {
if (!(element = $(element).firstChild)) return [];
while (element && element.nodeType != 1) element = element.nextSibling;
if (element) return [element].concat($(element).nextSiblings());
return [];
},previousSiblings: function(element) {
return $(element).recursivelyCollect('previousSibling');
},nextSiblings: function(element) {
return $(element).recursivelyCollect('nextSibling');
},siblings: function(element) {
element = $(element);
return element.previousSiblings().reverse().concat(element.nextSiblings());
},match: function(element,selector) {
if (Object.isString(selector))
selector = new Selector(selector);
return selector.match($(element));
},up: function(element,expression,index) {
element = $(element);
if (arguments.length == 1) return $(element.parentNode);
var ancestors = element.ancestors();
return Object.isNumber(expression) ? ancestors[expression] :
Selector.findElement(ancestors,expression,index);
},down: function(element,expression,index) {
element = $(element);
if (arguments.length == 1) return element.firstDescendant();
return Object.isNumber(expression) ? element.descendants()[expression] :
Element.select(element,expression)[index || 0];
},previous: function(element,expression,index) {
element = $(element);
if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element));
var previousSiblings = element.previousSiblings();
return Object.isNumber(expression) ? previousSiblings[expression] :
Selector.findElement(previousSiblings,expression,index);
},next: function(element,expression,index) {
element = $(element);
if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element));
var nextSiblings = element.nextSiblings();
return Object.isNumber(expression) ? nextSiblings[expression] :
Selector.findElement(nextSiblings,expression,index);
},select: function() {
var args = $A(arguments),element = $(args.shift());
return Selector.findChildElements(element,args);
},adjacent: function() {
var args = $A(arguments),element = $(args.shift());
return Selector.findChildElements(element.parentNode,args).without(element);
},identify: function(element) {
element = $(element);
var id = element.readAttribute('id'),self = arguments.callee;
if (id) return id;
do { id = 'anonymous_element_' + self.counter++ } while ($(id));
element.writeAttribute('id',id);
return id;
},readAttribute: function(element,name) {
element = $(element);
if (Prototype.Browser.IE) {
var t = Element._attributeTranslations.read;
if (t.values[name]) return t.values[name](element,name);
if (t.names[name]) name = t.names[name];
if (name.include(':')) {
return (!element.attributes || !element.attributes[name]) ? null :
element.attributes[name].value;
}
}
return element.getAttribute(name);
},writeAttribute: function(element,name,value) {
element = $(element);
var attributes = { },t = Element._attributeTranslations.write;
if (typeof name == 'object') attributes = name;
else attributes[name] = Object.isUndefined(value) ? true : value;
for (var attr in attributes) {
name = t.names[attr] || attr;
value = attributes[attr];
if (t.values[attr]) name = t.values[attr](element,value);
if (value === false || value === null)
element.removeAttribute(name);
else if (value === true)
element.setAttribute(name,name);
else element.setAttribute(name,value);
}
return element;
},getHeight: function(element) {
return $(element).getDimensions().height;
},getWidth: function(element) {
return $(element).getDimensions().width;
},classNames: function(element) {
return new Element.ClassNames(element);
},hasClassName: function(element,className) {
if (!(element = $(element))) return;
var elementClassName = element.className;
return (elementClassName.length > 0 && (elementClassName == className ||
new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
},addClassName: function(element,className) {
if (!(element = $(element))) return;
if (!element.hasClassName(className))
element.className += (element.className ? ' ' : '') + className;
return element;
},removeClassName: function(element,className) {
if (!(element = $(element))) return;
element.className = element.className.replace(
new RegExp("(^|\\s+)" + className + "(\\s+|$)"),' ').strip();
return element;
},toggleClassName: function(element,className) {
if (!(element = $(element))) return;
return element[element.hasClassName(className) ?
'removeClassName' : 'addClassName'](className);
},// removes whitespace-only text node children
cleanWhitespace: function(element) {
element = $(element);
var node = element.firstChild;
while (node) {
var nextNode = node.nextSibling;
if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
element.removeChild(node);
node = nextNode;
}
return element;
},empty: function(element) {
return $(element).innerHTML.blank();
},descendantOf: function(element,ancestor) {
element = $(element),ancestor = $(ancestor);
if (element.compareDocumentPosition)
return (element.compareDocumentPosition(ancestor) & 8) === 8;
if (ancestor.contains)
return ancestor.contains(element) && ancestor !== element;
while (element = element.parentNode)
if (element == ancestor) return true;
return false;
},scrollTo: function(element) {
element = $(element);
var pos = element.cumulativeOffset();
window.scrollTo(pos[0],pos[1]);
return element;
},getStyle: function(element,style) {
element = $(element);
style = style == 'float' ? 'cssFloat' : style.camelize();
var value = element.style[style];
if (!value || value == 'auto') {
var css = document.defaultView.getComputedStyle(element,null);
value = css ? css[style] : null;
}
if (style == 'opacity') return value ? parseFloat(value) : 1.0;
return value == 'auto' ? null : value;
},getOpacity: function(element) {
return $(element).getStyle('opacity');
},setStyle: function(element,styles) {
element = $(element);
var elementStyle = element.style,match;
if (Object.isString(styles)) {
element.style.cssText += ';' + styles;
return styles.include('opacity') ?
element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
}
for (var property in styles)
if (property == 'opacity') element.setOpacity(styles[property]);
else
elementStyle[(property == 'float' || property == 'cssFloat') ?
(Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') :
property] = styles[property];
return element;
},setOpacity: function(element,value) {
element = $(element);
element.style.opacity = (value == 1 || value === '') ? '' :
(value < 0.00001) ? 0 : value;
return element;
},getDimensions: function(element) {
element = $(element);
var display = element.getStyle('display');
if (display != 'none' && display != null) // Safari bug
return {width: element.offsetWidth,height: element.offsetHeight};
// All *Width and *Height properties give 0 on elements with display none,// so enable the element temporarily
var els = element.style;
var originalVisibility = els.visibility;
var originalPosition = els.position;
var originalDisplay = els.display;
els.visibility = 'hidden';
els.position = 'absolute';
els.display = 'block';
var originalWidth = element.clientWidth;
var originalHeight = element.clientHeight;
els.display = originalDisplay;
els.position = originalPosition;
els.visibility = originalVisibility;
return {width: originalWidth,height: originalHeight};
},makePositioned: function(element) {
element = $(element);
var pos = Element.getStyle(element,'position');
if (pos == 'static' || !pos) {
element._madePositioned = true;
element.style.position = 'relative';
// Opera returns the offset relative to the positioning context,when an
// element is position relative but top and left have not been defined
if (Prototype.Browser.Opera) {
element.style.top = 0;
element.style.left = 0;
}
}
return element;
},undoPositioned: function(element) {
element = $(element);
if (element._madePositioned) {
element._madePositioned = undefined;
element.style.position =
element.style.top =
element.style.left =
element.style.bottom =
element.style.right = '';
}
return element;
},makeClipping: function(element) {
element = $(element);
if (element._overflow) return element;
element._overflow = Element.getStyle(element,'overflow') || 'auto';
if (element._overflow !== 'hidden')
element.style.overflow = 'hidden';
return element;
},undoClipping: function(element) {
element = $(element);
if (!element._overflow) return element;
element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
element._overflow = null;
return element;
},cumulativeOffset: function(element) {
var valueT = 0,valueL = 0;
do {
valueT += element.offsetTop  || 0;
valueL += element.offsetLeft || 0;
element = element.offsetParent;
} while (element);
return Element._returnOffset(valueL,valueT);
},positionedOffset: function(element) {
var valueT = 0,valueL = 0;
do {
valueT += element.offsetTop  || 0;
valueL += element.offsetLeft || 0;
element = element.offsetParent;
if (element) {
if (element.tagName.toUpperCase() == 'BODY') break;
var p = Element.getStyle(element,'position');
if (p !== 'static') break;
}
} while (element);
return Element._returnOffset(valueL,valueT);
},absolutize: function(element) {
element = $(element);
if (element.getStyle('position') == 'absolute') return element;
// Position.prepare(); // To be done manually by Scripty when it needs it.
var offsets = element.positionedOffset();
var top     = offsets[1];
var left    = offsets[0];
var width   = element.clientWidth;
var height  = element.clientHeight;
element._originalLeft   = left - parseFloat(element.style.left  || 0);
element._originalTop    = top  - parseFloat(element.style.top || 0);
element._originalWidth  = element.style.width;
element._originalHeight = element.style.height;
element.style.position = 'absolute';
element.style.top    = top + 'px';
element.style.left   = left + 'px';
element.style.width  = width + 'px';
element.style.height = height + 'px';
return element;
},relativize: function(element) {
element = $(element);
if (element.getStyle('position') == 'relative') return element;
// Position.prepare(); // To be done manually by Scripty when it needs it.
element.style.position = 'relative';
var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
element.style.top    = top + 'px';
element.style.left   = left + 'px';
element.style.height = element._originalHeight;
element.style.width  = element._originalWidth;
return element;
},cumulativeScrollOffset: function(element) {
var valueT = 0,valueL = 0;
do {
valueT += element.scrollTop  || 0;
valueL += element.scrollLeft || 0;
element = element.parentNode;
} while (element);
return Element._returnOffset(valueL,valueT);
},getOffsetParent: function(element) {
if (element.offsetParent) return $(element.offsetParent);
if (element == document.body) return $(element);
while ((element = element.parentNode) && element != document.body)
if (Element.getStyle(element,'position') != 'static')
return $(element);
return $(document.body);
},viewportOffset: function(forElement) {
var valueT = 0,valueL = 0;
var element = forElement;
do {
valueT += element.offsetTop  || 0;
valueL += element.offsetLeft || 0;
// Safari fix
if (element.offsetParent == document.body &&
Element.getStyle(element,'position') == 'absolute') break;
} while (element = element.offsetParent);
element = forElement;
do {
if (!Prototype.Browser.Opera || (element.tagName && (element.tagName.toUpperCase() == 'BODY'))) {
valueT -= element.scrollTop  || 0;
valueL -= element.scrollLeft || 0;
}
} while (element = element.parentNode);
return Element._returnOffset(valueL,valueT);
},clonePosition: function(element,source) {
var options = Object.extend({
setLeft:    true,setTop:     true,setWidth:   true,setHeight:  true,offsetTop:  0,offsetLeft: 0
},arguments[2] || { });
// find page position of source
source = $(source);
var p = source.viewportOffset();
// find coordinate system to use
element = $(element);
var delta = [0,0];
var parent = null;
// delta [0,0] will do fine with position: fixed elements,// position:absolute needs offsetParent deltas
if (Element.getStyle(element,'position') == 'absolute') {
parent = element.getOffsetParent();
delta = parent.viewportOffset();
}
// correct by body offsets (fixes Safari)
if (parent == document.body) {
delta[0] -= document.body.offsetLeft;
delta[1] -= document.body.offsetTop;
}
// set position
if (options.setLeft)   element.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
if (options.setTop)    element.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
if (options.setWidth)  element.style.width = source.offsetWidth + 'px';
if (options.setHeight) element.style.height = source.offsetHeight + 'px';
return element;
}
};
Element.Methods.identify.counter = 1;
Object.extend(Element.Methods,{
getElementsBySelector: Element.Methods.select,childElements: Element.Methods.immediateDescendants
});
Element._attributeTranslations = {
write: {
names: {
className: 'class',htmlFor:   'for'
},values: { }
}
};
if (Prototype.Browser.Opera) {
Element.Methods.getStyle = Element.Methods.getStyle.wrap(
function(proceed,element,style) {
switch (style) {
case 'left': case 'top': case 'right': case 'bottom':
if (proceed(element,'position') === 'static') return null;
case 'height': case 'width':
// returns '0px' for hidden elements; we want it to return null
if (!Element.visible(element)) return null;
// returns the border-box dimensions rather than the content-box
// dimensions,so we subtract padding and borders from the value
var dim = parseInt(proceed(element,style),10);
if (dim !== element['offset' + style.capitalize()])
return dim + 'px';
var properties;
if (style === 'height') {
properties = ['border-top-width','padding-top','padding-bottom','border-bottom-width'];
}
else {
properties = ['border-left-width','padding-left','padding-right','border-right-width'];
}
return properties.inject(dim,function(memo,property) {
var val = proceed(element,property);
return val === null ? memo : memo - parseInt(val,10);
}) + 'px';
default: return proceed(element,style);
}
}
);
Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(
function(proceed,element,attribute) {
if (attribute === 'title') return element.title;
return proceed(element,attribute);
}
);
}
else if (Prototype.Browser.IE) {
// IE doesn't report offsets correctly for static elements,so we change them
// to "relative" to get the values,then change them back.
Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap(
function(proceed,element) {
element = $(element);
// IE throws an error if element is not in document
try { element.offsetParent }
catch(e) { return $(document.body) }
var position = element.getStyle('position');
if (position !== 'static') return proceed(element);
element.setStyle({ position: 'relative' });
var value = proceed(element);
element.setStyle({ position: position });
return value;
}
);
$w('positionedOffset viewportOffset').each(function(method) {
Element.Methods[method] = Element.Methods[method].wrap(
function(proceed,element) {
element = $(element);
try { element.offsetParent }
catch(e) { return Element._returnOffset(0,0) }
var position = element.getStyle('position');
if (position !== 'static') return proceed(element);
// Trigger hasLayout on the offset parent so that IE6 reports
// accurate offsetTop and offsetLeft values for position: fixed.
var offsetParent = element.getOffsetParent();
if (offsetParent && offsetParent.getStyle('position') === 'fixed')
offsetParent.setStyle({ zoom: 1 });
element.setStyle({ position: 'relative' });
var value = proceed(element);
element.setStyle({ position: position });
return value;
}
);
});
Element.Methods.cumulativeOffset = Element.Methods.cumulativeOffset.wrap(
function(proceed,element) {
try { element.offsetParent }
catch(e) { return Element._returnOffset(0,0) }
return proceed(element);
}
);
Element.Methods.getStyle = function(element,style) {
element = $(element);
style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
var value = element.style[style];
if (!value && element.currentStyle) value = element.currentStyle[style];
if (style == 'opacity') {
if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
if (value[1]) return parseFloat(value[1]) / 100;
return 1.0;
}
if (value == 'auto') {
if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
return element['offset' + style.capitalize()] + 'px';
return null;
}
return value;
};
Element.Methods.setOpacity = function(element,value) {
function stripAlpha(filter){
return filter.replace(/alpha\([^\)]*\)/gi,'');
}
element = $(element);
var currentStyle = element.currentStyle;
if ((currentStyle && !currentStyle.hasLayout) ||
(!currentStyle && element.style.zoom == 'normal'))
element.style.zoom = 1;
var filter = element.getStyle('filter'),style = element.style;
if (value == 1 || value === '') {
(filter = stripAlpha(filter)) ?
style.filter = filter : style.removeAttribute('filter');
return element;
} else if (value < 0.00001) value = 0;
style.filter = stripAlpha(filter) +
'alpha(opacity=' + (value * 100) + ')';
return element;
};
Element._attributeTranslations = {
read: {
names: {
'class': 'className','for':   'htmlFor'
},values: {
_getAttr: function(element,attribute) {
return element.getAttribute(attribute,2);
},_getAttrNode: function(element,attribute) {
var node = element.getAttributeNode(attribute);
return node ? node.value : "";
},_getEv: function(element,attribute) {
attribute = element.getAttribute(attribute);
return attribute ? attribute.toString().slice(23,-2) : null;
},_flag: function(element,attribute) {
return $(element).hasAttribute(attribute) ? attribute : null;
},style: function(element) {
return element.style.cssText.toLowerCase();
},title: function(element) {
return element.title;
}
}
}
};
Element._attributeTranslations.write = {
names: Object.extend({
cellpadding: 'cellPadding',cellspacing: 'cellSpacing'
},Element._attributeTranslations.read.names),values: {
checked: function(element,value) {
element.checked = !!value;
},style: function(element,value) {
element.style.cssText = value ? value : '';
}
}
};
Element._attributeTranslations.has = {};
$w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +
'encType maxLength readOnly longDesc frameBorder').each(function(attr) {
Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;
Element._attributeTranslations.has[attr.toLowerCase()] = attr;
});
(function(v) {
Object.extend(v,{
href:        v._getAttr,src:         v._getAttr,type:        v._getAttr,action:      v._getAttrNode,disabled:    v._flag,checked:     v._flag,readonly:    v._flag,multiple:    v._flag,onload:      v._getEv,onunload:    v._getEv,onclick:     v._getEv,ondblclick:  v._getEv,onmousedown: v._getEv,onmouseup:   v._getEv,onmouseover: v._getEv,onmousemove: v._getEv,onmouseout:  v._getEv,onfocus:     v._getEv,onblur:      v._getEv,onkeypress:  v._getEv,onkeydown:   v._getEv,onkeyup:     v._getEv,onsubmit:    v._getEv,onreset:     v._getEv,onselect:    v._getEv,onchange:    v._getEv
});
})(Element._attributeTranslations.read.values);
}
else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {
Element.Methods.setOpacity = function(element,value) {
element = $(element);
element.style.opacity = (value == 1) ? 0.999999 :
(value === '') ? '' : (value < 0.00001) ? 0 : value;
return element;
};
}
else if (Prototype.Browser.WebKit) {
Element.Methods.setOpacity = function(element,value) {
element = $(element);
element.style.opacity = (value == 1 || value === '') ? '' :
(value < 0.00001) ? 0 : value;
if (value == 1)
if(element.tagName.toUpperCase() == 'IMG' && element.width) {
element.width++; element.width--;
} else try {
var n = document.createTextNode(' ');
element.appendChild(n);
element.removeChild(n);
} catch (e) { }
return element;
};
// Safari returns margins on body which is incorrect if the child is absolutely
// positioned.  For performance reasons,redefine Element#cumulativeOffset for
// KHTML/WebKit only.
Element.Methods.cumulativeOffset = function(element) {
var valueT = 0,valueL = 0;
do {
valueT += element.offsetTop  || 0;
valueL += element.offsetLeft || 0;
if (element.offsetParent == document.body)
if (Element.getStyle(element,'position') == 'absolute') break;
element = element.offsetParent;
} while (element);
return Element._returnOffset(valueL,valueT);
};
}
if (Prototype.Browser.IE || Prototype.Browser.Opera) {
// IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements
Element.Methods.update = function(element,content) {
element = $(element);
if (content && content.toElement) content = content.toElement();
if (Object.isElement(content)) return element.update().insert(content);
content = Object.toHTML(content);
var tagName = element.tagName.toUpperCase();
if (tagName in Element._insertionTranslations.tags) {
$A(element.childNodes).each(function(node) { element.removeChild(node) });
Element._getContentFromAnonymousElement(tagName,content.stripScripts())
.each(function(node) { element.appendChild(node) });
}
else element.innerHTML = content.stripScripts();
content.evalScripts.bind(content).defer();
return element;
};
}
if ('outerHTML' in document.createElement('div')) {
Element.Methods.replace = function(element,content) {
element = $(element);
if (content && content.toElement) content = content.toElement();
if (Object.isElement(content)) {
element.parentNode.replaceChild(content,element);
return element;
}
content = Object.toHTML(content);
var parent = element.parentNode,tagName = parent.tagName.toUpperCase();
if (Element._insertionTranslations.tags[tagName]) {
var nextSibling = element.next();
var fragments = Element._getContentFromAnonymousElement(tagName,content.stripScripts());
parent.removeChild(element);
if (nextSibling)
fragments.each(function(node) { parent.insertBefore(node,nextSibling) });
else
fragments.each(function(node) { parent.appendChild(node) });
}
else element.outerHTML = content.stripScripts();
content.evalScripts.bind(content).defer();
return element;
};
}
Element._returnOffset = function(l,t) {
var result = [l,t];
result.left = l;
result.top = t;
return result;
};
Element._getContentFromAnonymousElement = function(tagName,html) {
var div = new Element('div'),t = Element._insertionTranslations.tags[tagName];
if (t) {
div.innerHTML = t[0] + html + t[1];
t[2].times(function() { div = div.firstChild });
} else div.innerHTML = html;
return $A(div.childNodes);
};
Element._insertionTranslations = {
before: function(element,node) {
element.parentNode.insertBefore(node,element);
},top: function(element,node) {
element.insertBefore(node,element.firstChild);
},bottom: function(element,node) {
element.appendChild(node);
},after: function(element,node) {
element.parentNode.insertBefore(node,element.nextSibling);
},tags: {
TABLE:  ['<table>','</table>',1],TBODY:  ['<table><tbody>','</tbody></table>',2],TR:     ['<table><tbody><tr>','</tr></tbody></table>',3],TD:     ['<table><tbody><tr><td>','</td></tr></tbody></table>',4],SELECT: ['<select>','</select>',1]
}
};
(function() {
Object.extend(this.tags,{
THEAD: this.tags.TBODY,TFOOT: this.tags.TBODY,TH:    this.tags.TD
});
}).call(Element._insertionTranslations);
Element.Methods.Simulated = {
hasAttribute: function(element,attribute) {
attribute = Element._attributeTranslations.has[attribute] || attribute;
var node = $(element).getAttributeNode(attribute);
return !!(node && node.specified);
}
};
Element.Methods.ByTag = { };
Object.extend(Element,Element.Methods);
if (!Prototype.BrowserFeatures.ElementExtensions &&
document.createElement('div')['__proto__']) {
window.HTMLElement = { };
window.HTMLElement.prototype = document.createElement('div')['__proto__'];
Prototype.BrowserFeatures.ElementExtensions = true;
}
Element.extend = (function() {
if (Prototype.BrowserFeatures.SpecificElementExtensions)
return Prototype.K;
var Methods = { },ByTag = Element.Methods.ByTag;
var extend = Object.extend(function(element) {
if (!element || element._extendedByPrototype ||
element.nodeType != 1 || element == window) return element;
var methods = Object.clone(Methods),tagName = element.tagName.toUpperCase(),property,value;
// extend methods for specific tags
if (ByTag[tagName]) Object.extend(methods,ByTag[tagName]);
for (property in methods) {
value = methods[property];
if (Object.isFunction(value) && !(property in element))
element[property] = value.methodize();
}
element._extendedByPrototype = Prototype.emptyFunction;
return element;
},{
refresh: function() {
// extend methods for all tags (Safari doesn't need this)
if (!Prototype.BrowserFeatures.ElementExtensions) {
Object.extend(Methods,Element.Methods);
Object.extend(Methods,Element.Methods.Simulated);
}
}
});
extend.refresh();
return extend;
})();
Element.hasAttribute = function(element,attribute) {
if (element.hasAttribute) return element.hasAttribute(attribute);
return Element.Methods.Simulated.hasAttribute(element,attribute);
};
Element.addMethods = function(methods) {
var F = Prototype.BrowserFeatures,T = Element.Methods.ByTag;
if (!methods) {
Object.extend(Form,Form.Methods);
Object.extend(Form.Element,Form.Element.Methods);
Object.extend(Element.Methods.ByTag,{
"FORM":     Object.clone(Form.Methods),"INPUT":    Object.clone(Form.Element.Methods),"SELECT":   Object.clone(Form.Element.Methods),"TEXTAREA": Object.clone(Form.Element.Methods)
});
}
if (arguments.length == 2) {
var tagName = methods;
methods = arguments[1];
}
if (!tagName) Object.extend(Element.Methods,methods || { });
else {
if (Object.isArray(tagName)) tagName.each(extend);
else extend(tagName);
}
function extend(tagName) {
tagName = tagName.toUpperCase();
if (!Element.Methods.ByTag[tagName])
Element.Methods.ByTag[tagName] = { };
Object.extend(Element.Methods.ByTag[tagName],methods);
}
function copy(methods,destination,onlyIfAbsent) {
onlyIfAbsent = onlyIfAbsent || false;
for (var property in methods) {
var value = methods[property];
if (!Object.isFunction(value)) continue;
if (!onlyIfAbsent || !(property in destination))
destination[property] = value.methodize();
}
}
function findDOMClass(tagName) {
var klass;
var trans = {
"OPTGROUP": "OptGroup","TEXTAREA": "TextArea","P": "Paragraph","FIELDSET": "FieldSet","UL": "UList","OL": "OList","DL": "DList","DIR": "Directory","H1": "Heading","H2": "Heading","H3": "Heading","H4": "Heading","H5": "Heading","H6": "Heading","Q": "Quote","INS": "Mod","DEL": "Mod","A": "Anchor","IMG": "Image","CAPTION":
"TableCaption","COL": "TableCol","COLGROUP": "TableCol","THEAD":
"TableSection","TFOOT": "TableSection","TBODY": "TableSection","TR":
"TableRow","TH": "TableCell","TD": "TableCell","FRAMESET":
"FrameSet","IFRAME": "IFrame"
};
if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
if (window[klass]) return window[klass];
klass = 'HTML' + tagName + 'Element';
if (window[klass]) return window[klass];
klass = 'HTML' + tagName.capitalize() + 'Element';
if (window[klass]) return window[klass];
window[klass] = { };
window[klass].prototype = document.createElement(tagName)['__proto__'];
return window[klass];
}
if (F.ElementExtensions) {
copy(Element.Methods,HTMLElement.prototype);
copy(Element.Methods.Simulated,HTMLElement.prototype,true);
}
if (F.SpecificElementExtensions) {
for (var tag in Element.Methods.ByTag) {
var klass = findDOMClass(tag);
if (Object.isUndefined(klass)) continue;
copy(T[tag],klass.prototype);
}
}
Object.extend(Element,Element.Methods);
delete Element.ByTag;
if (Element.extend.refresh) Element.extend.refresh();
Element.cache = { };
};
document.viewport = {
getDimensions: function() {
var dimensions = { },B = Prototype.Browser;
$w('width height').each(function(d) {
var D = d.capitalize();
if (B.WebKit && !document.evaluate) {
// Safari <3.0 needs self.innerWidth/Height
dimensions[d] = self['inner' + D];
} else if (B.Opera && parseFloat(window.opera.version()) < 9.5) {
// Opera <9.5 needs document.body.clientWidth/Height
dimensions[d] = document.body['client' + D]
} else {
dimensions[d] = document.documentElement['client' + D];
}
});
return dimensions;
},getWidth: function() {
return this.getDimensions().width;
},getHeight: function() {
return this.getDimensions().height;
},getScrollOffsets: function() {
return Element._returnOffset(
window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
}
};
/* Portions of the Selector class are derived from Jack Slocum's DomQuery,* part of YUI-Ext version 0.40,distributed under the terms of an MIT-style
* license.  Please see http://www.yui-ext.com/ for more information. */
var Selector = Class.create({
initialize: function(expression) {
this.expression = expression.strip();
if (this.shouldUseSelectorsAPI()) {
this.mode = 'selectorsAPI';
} else if (this.shouldUseXPath()) {
this.mode = 'xpath';
this.compileXPathMatcher();
} else {
this.mode = "normal";
this.compileMatcher();
}
},shouldUseXPath: function() {
if (!Prototype.BrowserFeatures.XPath) return false;
var e = this.expression;
// Safari 3 chokes on :*-of-type and :empty
if (Prototype.Browser.WebKit &&
(e.include("-of-type") || e.include(":empty")))
return false;
// XPath can't do namespaced attributes,nor can it read
// the "checked" property from DOM nodes
if ((/(\[[\w-]*?:|:checked)/).test(e))
return false;
return true;
},shouldUseSelectorsAPI: function() {
if (!Prototype.BrowserFeatures.SelectorsAPI) return false;
if (!Selector._div) Selector._div = new Element('div');
// Make sure the browser treats the selector as valid. Test on an
// isolated element to minimize cost of this check.
try {
Selector._div.querySelector(this.expression);
} catch(e) {
return false;
}
return true;
},compileMatcher: function() {
var e = this.expression,ps = Selector.patterns,h = Selector.handlers,c = Selector.criteria,le,p,m;
if (Selector._cache[e]) {
this.matcher = Selector._cache[e];
return;
}
this.matcher = ["this.matcher = function(root) {","var r = root,h = Selector.handlers,c = false,n;"];
while (e && le != e && (/\S/).test(e)) {
le = e;
for (var i in ps) {
p = ps[i];
if (m = e.match(p)) {
this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :
new Template(c[i]).evaluate(m));
e = e.replace(m[0],'');
break;
}
}
}
this.matcher.push("return h.unique(n);\n}");
eval(this.matcher.join('\n'));
Selector._cache[this.expression] = this.matcher;
},compileXPathMatcher: function() {
var e = this.expression,ps = Selector.patterns,x = Selector.xpath,le,m;
if (Selector._cache[e]) {
this.xpath = Selector._cache[e]; return;
}
this.matcher = ['.//*'];
while (e && le != e && (/\S/).test(e)) {
le = e;
for (var i in ps) {
if (m = e.match(ps[i])) {
this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :
new Template(x[i]).evaluate(m));
e = e.replace(m[0],'');
break;
}
}
}
this.xpath = this.matcher.join('');
Selector._cache[this.expression] = this.xpath;
},findElements: function(root) {
root = root || document;
var e = this.expression,results;
switch (this.mode) {
case 'selectorsAPI':
// querySelectorAll queries document-wide,then filters to descendants
// of the context element. That's not what we want.
// Add an explicit context to the selector if necessary.
if (root !== document) {
var oldId = root.id,id = $(root).identify();
e = "#" + id + " " + e;
}
results = $A(root.querySelectorAll(e)).map(Element.extend);
root.id = oldId;
return results;
case 'xpath':
return document._getElementsByXPath(this.xpath,root);
default:
return this.matcher(root);
}
},match: function(element) {
this.tokens = [];
var e = this.expression,ps = Selector.patterns,as = Selector.assertions;
var le,p,m;
while (e && le !== e && (/\S/).test(e)) {
le = e;
for (var i in ps) {
p = ps[i];
if (m = e.match(p)) {
// use the Selector.assertions methods unless the selector
// is too complex.
if (as[i]) {
this.tokens.push([i,Object.clone(m)]);
e = e.replace(m[0],'');
} else {
// reluctantly do a document-wide search
// and look for a match in the array
return this.findElements(document).include(element);
}
}
}
}
var match = true,name,matches;
for (var i = 0,token; token = this.tokens[i]; i++) {
name = token[0],matches = token[1];
if (!Selector.assertions[name](element,matches)) {
match = false; break;
}
}
return match;
},toString: function() {
return this.expression;
},inspect: function() {
return "#<Selector:" + this.expression.inspect() + ">";
}
});
Object.extend(Selector,{
_cache: { },xpath: {
descendant:   "//*",child:        "/*",adjacent:     "/following-sibling::*[1]",laterSibling: '/following-sibling::*',tagName:      function(m) {
if (m[1] == '*') return '';
return "[local-name()='" + m[1].toLowerCase() +
"' or local-name()='" + m[1].toUpperCase() + "']";
},className:    "[contains(concat(' ',@class,' '),' #{1} ')]",id:           "[@id='#{1}']",attrPresence: function(m) {
m[1] = m[1].toLowerCase();
return new Template("[@#{1}]").evaluate(m);
},attr: function(m) {
m[1] = m[1].toLowerCase();
m[3] = m[5] || m[6];
return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
},pseudo: function(m) {
var h = Selector.xpath.pseudos[m[1]];
if (!h) return '';
if (Object.isFunction(h)) return h(m);
return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
},operators: {
'=':  "[@#{1}='#{3}']",'!=': "[@#{1}!='#{3}']",'^=': "[starts-with(@#{1},'#{3}')]",'$=': "[substring(@#{1},(string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",'*=': "[contains(@#{1},'#{3}')]",'~=': "[contains(concat(' ',@#{1},' '),' #{3} ')]",'|=': "[contains(concat('-',@#{1},'-'),'-#{3}-')]"
},pseudos: {
'first-child': '[not(preceding-sibling::*)]','last-child':  '[not(following-sibling::*)]','only-child':  '[not(preceding-sibling::* or following-sibling::*)]','empty':       "[count(*) = 0 and (count(text()) = 0)]",'checked':     "[@checked]",'disabled':    "[(@disabled) and (@type!='hidden')]",'enabled':     "[not(@disabled) and (@type!='hidden')]",'not': function(m) {
var e = m[6],p = Selector.patterns,x = Selector.xpath,le,v;
var exclusion = [];
while (e && le != e && (/\S/).test(e)) {
le = e;
for (var i in p) {
if (m = e.match(p[i])) {
v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m);
exclusion.push("(" + v.substring(1,v.length - 1) + ")");
e = e.replace(m[0],'');
break;
}
}
}
return "[not(" + exclusion.join(" and ") + ")]";
},'nth-child':      function(m) {
return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ",m);
},'nth-last-child': function(m) {
return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ",m);
},'nth-of-type':    function(m) {
return Selector.xpath.pseudos.nth("position() ",m);
},'nth-last-of-type': function(m) {
return Selector.xpath.pseudos.nth("(last() + 1 - position()) ",m);
},'first-of-type':  function(m) {
m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m);
},'last-of-type':   function(m) {
m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m);
},'only-of-type':   function(m) {
var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m);
},nth: function(fragment,m) {
var mm,formula = m[6],predicate;
if (formula == 'even') formula = '2n+0';
if (formula == 'odd')  formula = '2n+1';
if (mm = formula.match(/^(\d+)$/)) // digit only
return '[' + fragment + "= " + mm[1] + ']';
if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
if (mm[1] == "-") mm[1] = -1;
var a = mm[1] ? Number(mm[1]) : 1;
var b = mm[2] ? Number(mm[2]) : 0;
predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " +
"((#{fragment} - #{b}) div #{a} >= 0)]";
return new Template(predicate).evaluate({
fragment: fragment,a: a,b: b });
}
}
}
},criteria: {
tagName:      'n = h.tagName(n,r,"#{1}",c);      c = false;',className:    'n = h.className(n,r,"#{1}",c);    c = false;',id:           'n = h.id(n,r,"#{1}",c);           c = false;',attrPresence: 'n = h.attrPresence(n,r,"#{1}",c); c = false;',attr: function(m) {
m[3] = (m[5] || m[6]);
return new Template('n = h.attr(n,r,"#{1}","#{3}","#{2}",c); c = false;').evaluate(m);
},pseudo: function(m) {
if (m[6]) m[6] = m[6].replace(/"/g,'\\"');
return new Template('n = h.pseudo(n,"#{1}","#{6}",r,c); c = false;').evaluate(m);
},descendant:   'c = "descendant";',child:        'c = "child";',adjacent:     'c = "adjacent";',laterSibling: 'c = "laterSibling";'
},patterns: {
// combinators must be listed first
// (and descendant needs to be last combinator)
laterSibling: /^\s*~\s*/,child:        /^\s*>\s*/,adjacent:     /^\s*\+\s*/,descendant:   /^\s/,// selectors follow
tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,id:           /^#([\w\-\*]+)(\b|$)/,className:    /^\.([\w\-\*]+)(\b|$)/,pseudo:
/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,attrPresence: /^\[((?:[\w]+:)?[\w]+)\]/,attr:         /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/
},// for Selector.match and Element#match
assertions: {
tagName: function(element,matches) {
return matches[1].toUpperCase() == element.tagName.toUpperCase();
},className: function(element,matches) {
return Element.hasClassName(element,matches[1]);
},id: function(element,matches) {
return element.id === matches[1];
},attrPresence: function(element,matches) {
return Element.hasAttribute(element,matches[1]);
},attr: function(element,matches) {
var nodeValue = Element.readAttribute(element,matches[1]);
return nodeValue && Selector.operators[matches[2]](nodeValue,matches[5] || matches[6]);
}
},handlers: {
// UTILITY FUNCTIONS
// joins two collections
concat: function(a,b) {
for (var i = 0,node; node = b[i]; i++)
a.push(node);
return a;
},// marks an array of nodes for counting
mark: function(nodes) {
var _true = Prototype.emptyFunction;
for (var i = 0,node; node = nodes[i]; i++)
node._countedByPrototype = _true;
return nodes;
},unmark: function(nodes) {
for (var i = 0,node; node = nodes[i]; i++)
node._countedByPrototype = undefined;
return nodes;
},// mark each child node with its position (for nth calls)
// "ofType" flag indicates whether we're indexing for nth-of-type
// rather than nth-child
index: function(parentNode,reverse,ofType) {
parentNode._countedByPrototype = Prototype.emptyFunction;
if (reverse) {
for (var nodes = parentNode.childNodes,i = nodes.length - 1,j = 1; i >= 0; i--) {
var node = nodes[i];
if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
}
} else {
for (var i = 0,j = 1,nodes = parentNode.childNodes; node = nodes[i]; i++)
if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
}
},// filters out duplicates and extends all nodes
unique: function(nodes) {
if (nodes.length == 0) return nodes;
var results = [],n;
for (var i = 0,l = nodes.length; i < l; i++)
if (!(n = nodes[i])._countedByPrototype) {
n._countedByPrototype = Prototype.emptyFunction;
results.push(Element.extend(n));
}
return Selector.handlers.unmark(results);
},// COMBINATOR FUNCTIONS
descendant: function(nodes) {
var h = Selector.handlers;
for (var i = 0,results = [],node; node = nodes[i]; i++)
h.concat(results,node.getElementsByTagName('*'));
return results;
},child: function(nodes) {
var h = Selector.handlers;
for (var i = 0,results = [],node; node = nodes[i]; i++) {
for (var j = 0,child; child = node.childNodes[j]; j++)
if (child.nodeType == 1 && child.tagName != '!') results.push(child);
}
return results;
},adjacent: function(nodes) {
for (var i = 0,results = [],node; node = nodes[i]; i++) {
var next = this.nextElementSibling(node);
if (next) results.push(next);
}
return results;
},laterSibling: function(nodes) {
var h = Selector.handlers;
for (var i = 0,results = [],node; node = nodes[i]; i++)
h.concat(results,Element.nextSiblings(node));
return results;
},nextElementSibling: function(node) {
while (node = node.nextSibling)
if (node.nodeType == 1) return node;
return null;
},previousElementSibling: function(node) {
while (node = node.previousSibling)
if (node.nodeType == 1) return node;
return null;
},// TOKEN FUNCTIONS
tagName: function(nodes,root,tagName,combinator) {
var uTagName = tagName.toUpperCase();
var results = [],h = Selector.handlers;
if (nodes) {
if (combinator) {
// fastlane for ordinary descendant combinators
if (combinator == "descendant") {
for (var i = 0,node; node = nodes[i]; i++)
h.concat(results,node.getElementsByTagName(tagName));
return results;
} else nodes = this[combinator](nodes);
if (tagName == "*") return nodes;
}
for (var i = 0,node; node = nodes[i]; i++)
if (node.tagName.toUpperCase() === uTagName) results.push(node);
return results;
} else return root.getElementsByTagName(tagName);
},id: function(nodes,root,id,combinator) {
var targetNode = $(id),h = Selector.handlers;
if (!targetNode) return [];
if (!nodes && root == document) return [targetNode];
if (nodes) {
if (combinator) {
if (combinator == 'child') {
for (var i = 0,node; node = nodes[i]; i++)
if (targetNode.parentNode == node) return [targetNode];
} else if (combinator == 'descendant') {
for (var i = 0,node; node = nodes[i]; i++)
if (Element.descendantOf(targetNode,node)) return [targetNode];
} else if (combinator == 'adjacent') {
for (var i = 0,node; node = nodes[i]; i++)
if (Selector.handlers.previousElementSibling(targetNode) == node)
return [targetNode];
} else nodes = h[combinator](nodes);
}
for (var i = 0,node; node = nodes[i]; i++)
if (node == targetNode) return [targetNode];
return [];
}
return (targetNode && Element.descendantOf(targetNode,root)) ? [targetNode] : [];
},className: function(nodes,root,className,combinator) {
if (nodes && combinator) nodes = this[combinator](nodes);
return Selector.handlers.byClassName(nodes,root,className);
},byClassName: function(nodes,root,className) {
if (!nodes) nodes = Selector.handlers.descendant([root]);
var needle = ' ' + className + ' ';
for (var i = 0,results = [],node,nodeClassName; node = nodes[i]; i++) {
nodeClassName = node.className;
if (nodeClassName.length == 0) continue;
if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle))
results.push(node);
}
return results;
},attrPresence: function(nodes,root,attr,combinator) {
if (!nodes) nodes = root.getElementsByTagName("*");
if (nodes && combinator) nodes = this[combinator](nodes);
var results = [];
for (var i = 0,node; node = nodes[i]; i++)
if (Element.hasAttribute(node,attr)) results.push(node);
return results;
},attr: function(nodes,root,attr,value,operator,combinator) {
if (!nodes) nodes = root.getElementsByTagName("*");
if (nodes && combinator) nodes = this[combinator](nodes);
var handler = Selector.operators[operator],results = [];
for (var i = 0,node; node = nodes[i]; i++) {
var nodeValue = Element.readAttribute(node,attr);
if (nodeValue === null) continue;
if (handler(nodeValue,value)) results.push(node);
}
return results;
},pseudo: function(nodes,name,value,root,combinator) {
if (nodes && combinator) nodes = this[combinator](nodes);
if (!nodes) nodes = root.getElementsByTagName("*");
return Selector.pseudos[name](nodes,value,root);
}
},pseudos: {
'first-child': function(nodes,value,root) {
for (var i = 0,results = [],node; node = nodes[i]; i++) {
if (Selector.handlers.previousElementSibling(node)) continue;
results.push(node);
}
return results;
},'last-child': function(nodes,value,root) {
for (var i = 0,results = [],node; node = nodes[i]; i++) {
if (Selector.handlers.nextElementSibling(node)) continue;
results.push(node);
}
return results;
},'only-child': function(nodes,value,root) {
var h = Selector.handlers;
for (var i = 0,results = [],node; node = nodes[i]; i++)
if (!h.previousElementSibling(node) && !h.nextElementSibling(node))
results.push(node);
return results;
},'nth-child':        function(nodes,formula,root) {
return Selector.pseudos.nth(nodes,formula,root);
},'nth-last-child':   function(nodes,formula,root) {
return Selector.pseudos.nth(nodes,formula,root,true);
},'nth-of-type':      function(nodes,formula,root) {
return Selector.pseudos.nth(nodes,formula,root,false,true);
},'nth-last-of-type': function(nodes,formula,root) {
return Selector.pseudos.nth(nodes,formula,root,true,true);
},'first-of-type':    function(nodes,formula,root) {
return Selector.pseudos.nth(nodes,"1",root,false,true);
},'last-of-type':     function(nodes,formula,root) {
return Selector.pseudos.nth(nodes,"1",root,true,true);
},'only-of-type':     function(nodes,formula,root) {
var p = Selector.pseudos;
return p['last-of-type'](p['first-of-type'](nodes,formula,root),formula,root);
},// handles the an+b logic
getIndices: function(a,b,total) {
if (a == 0) return b > 0 ? [b] : [];
return $R(1,total).inject([],function(memo,i) {
if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i);
return memo;
});
},// handles nth(-last)-child,nth(-last)-of-type,and (first|last)-of-type
nth: function(nodes,formula,root,reverse,ofType) {
if (nodes.length == 0) return [];
if (formula == 'even') formula = '2n+0';
if (formula == 'odd')  formula = '2n+1';
var h = Selector.handlers,results = [],indexed = [],m;
h.mark(nodes);
for (var i = 0,node; node = nodes[i]; i++) {
if (!node.parentNode._countedByPrototype) {
h.index(node.parentNode,reverse,ofType);
indexed.push(node.parentNode);
}
}
if (formula.match(/^\d+$/)) { // just a number
formula = Number(formula);
for (var i = 0,node; node = nodes[i]; i++)
if (node.nodeIndex == formula) results.push(node);
} else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
if (m[1] == "-") m[1] = -1;
var a = m[1] ? Number(m[1]) : 1;
var b = m[2] ? Number(m[2]) : 0;
var indices = Selector.pseudos.getIndices(a,b,nodes.length);
for (var i = 0,node,l = indices.length; node = nodes[i]; i++) {
for (var j = 0; j < l; j++)
if (node.nodeIndex == indices[j]) results.push(node);
}
}
h.unmark(nodes);
h.unmark(indexed);
return results;
},'empty': function(nodes,value,root) {
for (var i = 0,results = [],node; node = nodes[i]; i++) {
// IE treats comments as element nodes
if (node.tagName == '!' || node.firstChild) continue;
results.push(node);
}
return results;
},'not': function(nodes,selector,root) {
var h = Selector.handlers,selectorType,m;
var exclusions = new Selector(selector).findElements(root);
h.mark(exclusions);
for (var i = 0,results = [],node; node = nodes[i]; i++)
if (!node._countedByPrototype) results.push(node);
h.unmark(exclusions);
return results;
},'enabled': function(nodes,value,root) {
for (var i = 0,results = [],node; node = nodes[i]; i++)
if (!node.disabled && (!node.type || node.type !== 'hidden'))
results.push(node);
return results;
},'disabled': function(nodes,value,root) {
for (var i = 0,results = [],node; node = nodes[i]; i++)
if (node.disabled) results.push(node);
return results;
},'checked': function(nodes,value,root) {
for (var i = 0,results = [],node; node = nodes[i]; i++)
if (node.checked) results.push(node);
return results;
}
},operators: {
'=':  function(nv,v) { return nv == v; },'!=': function(nv,v) { return nv != v; },'^=': function(nv,v) { return nv == v || nv && nv.startsWith(v); },'$=': function(nv,v) { return nv == v || nv && nv.endsWith(v); },'*=': function(nv,v) { return nv == v || nv && nv.include(v); },'$=': function(nv,v) { return nv.endsWith(v); },'*=': function(nv,v) { return nv.include(v); },'~=': function(nv,v) { return (' ' + nv + ' ').include(' ' + v + ' '); },'|=': function(nv,v) { return ('-' + (nv || "").toUpperCase() +
'-').include('-' + (v || "").toUpperCase() + '-'); }
},split: function(expression) {
var expressions = [];
expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/,function(m) {
expressions.push(m[1].strip());
});
return expressions;
},matchElements: function(elements,expression) {
var matches = $$(expression),h = Selector.handlers;
h.mark(matches);
for (var i = 0,results = [],element; element = elements[i]; i++)
if (element._countedByPrototype) results.push(element);
h.unmark(matches);
return results;
},findElement: function(elements,expression,index) {
if (Object.isNumber(expression)) {
index = expression; expression = false;
}
return Selector.matchElements(elements,expression || '*')[index || 0];
},findChildElements: function(element,expressions) {
expressions = Selector.split(expressions.join(','));
var results = [],h = Selector.handlers;
for (var i = 0,l = expressions.length,selector; i < l; i++) {
selector = new Selector(expressions[i].strip());
h.concat(results,selector.findElements(element));
}
return (l > 1) ? h.unique(results) : results;
}
});
if (Prototype.Browser.IE) {
Object.extend(Selector.handlers,{
// IE returns comment nodes on getElementsByTagName("*").
// Filter them out.
concat: function(a,b) {
for (var i = 0,node; node = b[i]; i++)
if (node.tagName !== "!") a.push(node);
return a;
},// IE improperly serializes _countedByPrototype in (inner|outer)HTML.
unmark: function(nodes) {
for (var i = 0,node; node = nodes[i]; i++)
node.removeAttribute('_countedByPrototype');
return nodes;
}
});
}
function $$() {
return Selector.findChildElements(document,$A(arguments));
}
var Form = {
reset: function(form) {
$(form).reset();
return form;
},serializeElements: function(elements,options) {
if (typeof options != 'object') options = { hash: !!options };
else if (Object.isUndefined(options.hash)) options.hash = true;
var key,value,submitted = false,submit = options.submit;
var data = elements.inject({ },function(result,element) {
if (!element.disabled && element.name) {
key = element.name; value = $(element).getValue();
if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted &&
submit !== false && (!submit || key == submit) && (submitted = true)))) {
if (key in result) {
// a key is already present; construct an array of values
if (!Object.isArray(result[key])) result[key] = [result[key]];
result[key].push(value);
}
else result[key] = value;
}
}
return result;
});
return options.hash ? data : Object.toQueryString(data);
}
};
Form.Methods = {
serialize: function(form,options) {
return Form.serializeElements(Form.getElements(form),options);
},getElements: function(form) {
return $A($(form).getElementsByTagName('*')).inject([],function(elements,child) {
if (Form.Element.Serializers[child.tagName.toLowerCase()])
elements.push(Element.extend(child));
return elements;
}
);
},getInputs: function(form,typeName,name) {
form = $(form);
var inputs = form.getElementsByTagName('input');
if (!typeName && !name) return $A(inputs).map(Element.extend);
for (var i = 0,matchingInputs = [],length = inputs.length; i < length; i++) {
var input = inputs[i];
if ((typeName && input.type != typeName) || (name && input.name != name))
continue;
matchingInputs.push(Element.extend(input));
}
return matchingInputs;
},disable: function(form) {
form = $(form);
Form.getElements(form).invoke('disable');
return form;
},enable: function(form) {
form = $(form);
Form.getElements(form).invoke('enable');
return form;
},findFirstElement: function(form) {
var elements = $(form).getElements().findAll(function(element) {
return 'hidden' != element.type && !element.disabled;
});
var firstByIndex = elements.findAll(function(element) {
return element.hasAttribute('tabIndex') && element.tabIndex >= 0;
}).sortBy(function(element) { return element.tabIndex }).first();
return firstByIndex ? firstByIndex : elements.find(function(element) {
return ['input','select','textarea'].include(element.tagName.toLowerCase());
});
},focusFirstElement: function(form) {
form = $(form);
form.findFirstElement().activate();
return form;
},request: function(form,options) {
form = $(form),options = Object.clone(options || { });
var params = options.parameters,action = form.readAttribute('action') || '';
if (action.blank()) action = window.location.href;
options.parameters = form.serialize(true);
if (params) {
if (Object.isString(params)) params = params.toQueryParams();
Object.extend(options.parameters,params);
}
if (form.hasAttribute('method') && !options.method)
options.method = form.method;
return new Ajax.Request(action,options);
}
};
/*--------------------------------------------------------------------------*/
Form.Element = {
focus: function(element) {
$(element).focus();
return element;
},select: function(element) {
$(element).select();
return element;
}
};
Form.Element.Methods = {
serialize: function(element) {
element = $(element);
if (!element.disabled && element.name) {
var value = element.getValue();
if (value != undefined) {
var pair = { };
pair[element.name] = value;
return Object.toQueryString(pair);
}
}
return '';
},getValue: function(element) {
element = $(element);
var method = element.tagName.toLowerCase();
return Form.Element.Serializers[method](element);
},setValue: function(element,value) {
element = $(element);
var method = element.tagName.toLowerCase();
Form.Element.Serializers[method](element,value);
return element;
},clear: function(element) {
$(element).value = '';
return element;
},present: function(element) {
return $(element).value != '';
},activate: function(element) {
element = $(element);
try {
element.focus();
if (element.select && (element.tagName.toLowerCase() != 'input' ||
!['button','reset','submit'].include(element.type)))
element.select();
} catch (e) { }
return element;
},disable: function(element) {
element = $(element);
element.disabled = true;
return element;
},enable: function(element) {
element = $(element);
element.disabled = false;
return element;
}
};
/*--------------------------------------------------------------------------*/
var Field = Form.Element;
var $F = Form.Element.Methods.getValue;
/*--------------------------------------------------------------------------*/
Form.Element.Serializers = {
input: function(element,value) {
switch (element.type.toLowerCase()) {
case 'checkbox':
case 'radio':
return Form.Element.Serializers.inputSelector(element,value);
default:
return Form.Element.Serializers.textarea(element,value);
}
},inputSelector: function(element,value) {
if (Object.isUndefined(value)) return element.checked ? element.value : null;
else element.checked = !!value;
},textarea: function(element,value) {
if (Object.isUndefined(value)) return element.value;
else element.value = value;
},select: function(element,value) {
if (Object.isUndefined(value))
return this[element.type == 'select-one' ?
'selectOne' : 'selectMany'](element);
else {
var opt,currentValue,single = !Object.isArray(value);
for (var i = 0,length = element.length; i < length; i++) {
opt = element.options[i];
currentValue = this.optionValue(opt);
if (single) {
if (currentValue == value) {
opt.selected = true;
return;
}
}
else opt.selected = value.include(currentValue);
}
}
},selectOne: function(element) {
var index = element.selectedIndex;
return index >= 0 ? this.optionValue(element.options[index]) : null;
},selectMany: function(element) {
var values,length = element.length;
if (!length) return null;
for (var i = 0,values = []; i < length; i++) {
var opt = element.options[i];
if (opt.selected) values.push(this.optionValue(opt));
}
return values;
},optionValue: function(opt) {
// extend element because hasAttribute may not be native
return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
}
};
/*--------------------------------------------------------------------------*/
Abstract.TimedObserver = Class.create(PeriodicalExecuter,{
initialize: function($super,element,frequency,callback) {
$super(callback,frequency);
this.element   = $(element);
this.lastValue = this.getValue();
},execute: function() {
var value = this.getValue();
if (Object.isString(this.lastValue) && Object.isString(value) ?
this.lastValue != value : String(this.lastValue) != String(value)) {
this.callback(this.element,value);
this.lastValue = value;
}
}
});
Form.Element.Observer = Class.create(Abstract.TimedObserver,{
getValue: function() {
return Form.Element.getValue(this.element);
}
});
Form.Observer = Class.create(Abstract.TimedObserver,{
getValue: function() {
return Form.serialize(this.element);
}
});
/*--------------------------------------------------------------------------*/
Abstract.EventObserver = Class.create({
initialize: function(element,callback) {
this.element  = $(element);
this.callback = callback;
this.lastValue = this.getValue();
if (this.element.tagName.toLowerCase() == 'form')
this.registerFormCallbacks();
else
this.registerCallback(this.element);
},onElementEvent: function() {
var value = this.getValue();
if (this.lastValue != value) {
this.callback(this.element,value);
this.lastValue = value;
}
},registerFormCallbacks: function() {
Form.getElements(this.element).each(this.registerCallback,this);
},registerCallback: function(element) {
if (element.type) {
switch (element.type.toLowerCase()) {
case 'checkbox':
case 'radio':
Event.observe(element,'click',this.onElementEvent.bind(this));
break;
default:
Event.observe(element,'change',this.onElementEvent.bind(this));
break;
}
}
}
});
Form.Element.EventObserver = Class.create(Abstract.EventObserver,{
getValue: function() {
return Form.Element.getValue(this.element);
}
});
Form.EventObserver = Class.create(Abstract.EventObserver,{
getValue: function() {
return Form.serialize(this.element);
}
});
if (!window.Event) var Event = { };
Object.extend(Event,{
KEY_BACKSPACE: 8,KEY_TAB:       9,KEY_RETURN:   13,KEY_ESC:      27,KEY_LEFT:     37,KEY_UP:       38,KEY_RIGHT:    39,KEY_DOWN:     40,KEY_DELETE:   46,KEY_HOME:     36,KEY_END:      35,KEY_PAGEUP:   33,KEY_PAGEDOWN: 34,KEY_INSERT:   45,cache: { },relatedTarget: function(event) {
var element;
switch(event.type) {
case 'mouseover': element = event.fromElement; break;
case 'mouseout':  element = event.toElement;   break;
default: return null;
}
return Element.extend(element);
}
});
Event.Methods = (function() {
var isButton;
if (Prototype.Browser.IE) {
var buttonMap = { 0: 1,1: 4,2: 2 };
isButton = function(event,code) {
return event.button == buttonMap[code];
};
} else if (Prototype.Browser.WebKit) {
isButton = function(event,code) {
switch (code) {
case 0: return event.which == 1 && !event.metaKey;
case 1: return event.which == 1 && event.metaKey;
default: return false;
}
};
} else {
isButton = function(event,code) {
return event.which ? (event.which === code + 1) : (event.button === code);
};
}
return {
isLeftClick:   function(event) { return isButton(event,0) },isMiddleClick: function(event) { return isButton(event,1) },isRightClick:  function(event) { return isButton(event,2) },element: function(event) {
event = Event.extend(event);
var node          = event.target,type          = event.type,currentTarget = event.currentTarget;
if (currentTarget && currentTarget.tagName) {
// Firefox screws up the "click" event when moving between radio buttons
// via arrow keys. It also screws up the "load" and "error" events on images,// reporting the document as the target instead of the original image.
if (type === 'load' || type === 'error' ||
(type === 'click' && currentTarget.tagName.toLowerCase() === 'input'
&& currentTarget.type === 'radio'))
node = currentTarget;
}
if (node.nodeType == Node.TEXT_NODE) node = node.parentNode;
return Element.extend(node);
},findElement: function(event,expression) {
var element = Event.element(event);
if (!expression) return element;
var elements = [element].concat(element.ancestors());
return Selector.findElement(elements,expression,0);
},pointer: function(event) {
var docElement = document.documentElement,body = document.body || { scrollLeft: 0,scrollTop: 0 };
return {
x: event.pageX || (event.clientX +
(docElement.scrollLeft || body.scrollLeft) -
(docElement.clientLeft || 0)),y: event.pageY || (event.clientY +
(docElement.scrollTop || body.scrollTop) -
(docElement.clientTop || 0))
};
},pointerX: function(event) { return Event.pointer(event).x },pointerY: function(event) { return Event.pointer(event).y },stop: function(event) {
Event.extend(event);
event.preventDefault();
event.stopPropagation();
event.stopped = true;
}
};
})();
Event.extend = (function() {
var methods = Object.keys(Event.Methods).inject({ },function(m,name) {
m[name] = Event.Methods[name].methodize();
return m;
});
if (Prototype.Browser.IE) {
Object.extend(methods,{
stopPropagation: function() { this.cancelBubble = true },preventDefault:  function() { this.returnValue = false },inspect: function() { return "[object Event]" }
});
return function(event) {
if (!event) return false;
if (event._extendedByPrototype) return event;
event._extendedByPrototype = Prototype.emptyFunction;
var pointer = Event.pointer(event);
Object.extend(event,{
target: event.srcElement,relatedTarget: Event.relatedTarget(event),pageX:  pointer.x,pageY:  pointer.y
});
return Object.extend(event,methods);
};
} else {
Event.prototype = Event.prototype || document.createEvent("HTMLEvents")['__proto__'];
Object.extend(Event.prototype,methods);
return Prototype.K;
}
})();
Object.extend(Event,(function() {
var cache = Event.cache;
function getEventID(element) {
if (element._prototypeEventID) return element._prototypeEventID[0];
arguments.callee.id = arguments.callee.id || 1;
return element._prototypeEventID = [++arguments.callee.id];
}
function getDOMEventName(eventName) {
if (eventName && eventName.include(':')) return "dataavailable";
return eventName;
}
function getCacheForID(id) {
return cache[id] = cache[id] || { };
}
function getWrappersForEventName(id,eventName) {
var c = getCacheForID(id);
return c[eventName] = c[eventName] || [];
}
function createWrapper(element,eventName,handler) {
var id = getEventID(element);
var c = getWrappersForEventName(id,eventName);
if (c.pluck("handler").include(handler)) return false;
var wrapper = function(event) {
if (!Event || !Event.extend ||
(event.eventName && event.eventName != eventName))
return false;
Event.extend(event);
handler.call(element,event);
};
wrapper.handler = handler;
c.push(wrapper);
return wrapper;
}
function findWrapper(id,eventName,handler) {
var c = getWrappersForEventName(id,eventName);
return c.find(function(wrapper) { return wrapper.handler == handler });
}
function destroyWrapper(id,eventName,handler) {
var c = getCacheForID(id);
if (!c[eventName]) return false;
c[eventName] = c[eventName].without(findWrapper(id,eventName,handler));
}
function destroyCache() {
for (var id in cache)
for (var eventName in cache[id])
cache[id][eventName] = null;
}
// Internet Explorer needs to remove event handlers on page unload
// in order to avoid memory leaks.
if (window.attachEvent) {
window.attachEvent("onunload",destroyCache);
}
// Safari has a dummy event handler on page unload so that it won't
// use its bfcache. Safari <= 3.1 has an issue with restoring the "document"
// object when page is returned to via the back button using its bfcache.
if (Prototype.Browser.WebKit) {
window.addEventListener('unload',Prototype.emptyFunction,false);
}
return {
observe: function(element,eventName,handler) {
element = $(element);
var name = getDOMEventName(eventName);
var wrapper = createWrapper(element,eventName,handler);
if (!wrapper) return element;
if (element.addEventListener) {
element.addEventListener(name,wrapper,false);
} else {
element.attachEvent("on" + name,wrapper);
}
return element;
},stopObserving: function(element,eventName,handler) {
element = $(element);
var id = getEventID(element),name = getDOMEventName(eventName);
if (!handler && eventName) {
getWrappersForEventName(id,eventName).each(function(wrapper) {
element.stopObserving(eventName,wrapper.handler);
});
return element;
} else if (!eventName) {
Object.keys(getCacheForID(id)).each(function(eventName) {
element.stopObserving(eventName);
});
return element;
}
var wrapper = findWrapper(id,eventName,handler);
if (!wrapper) return element;
if (element.removeEventListener) {
element.removeEventListener(name,wrapper,false);
} else {
element.detachEvent("on" + name,wrapper);
}
destroyWrapper(id,eventName,handler);
return element;
},fire: function(element,eventName,memo) {
element = $(element);
if (element == document && document.createEvent && !element.dispatchEvent)
element = document.documentElement;
var event;
if (document.createEvent) {
event = document.createEvent("HTMLEvents");
event.initEvent("dataavailable",true,true);
} else {
event = document.createEventObject();
event.eventType = "ondataavailable";
}
event.eventName = eventName;
event.memo = memo || { };
if (document.createEvent) {
element.dispatchEvent(event);
} else {
element.fireEvent(event.eventType,event);
}
return Event.extend(event);
}
};
})());
Object.extend(Event,Event.Methods);
Element.addMethods({
fire:          Event.fire,observe:       Event.observe,stopObserving: Event.stopObserving
});
Object.extend(document,{
fire:          Element.Methods.fire.methodize(),observe:       Element.Methods.observe.methodize(),stopObserving: Element.Methods.stopObserving.methodize(),loaded:        false
});
(function() {
/* Support for the DOMContentLoaded event is based on work by Dan Webb,Matthias Miller,Dean Edwards and John Resig. */
var timer;
function fireContentLoadedEvent() {
if (document.loaded) return;
if (timer) window.clearInterval(timer);
document.fire("dom:loaded");
document.loaded = true;
}
if (document.addEventListener) {
if (Prototype.Browser.WebKit) {
timer = window.setInterval(function() {
if (/loaded|complete/.test(document.readyState))
fireContentLoadedEvent();
},0);
Event.observe(window,"load",fireContentLoadedEvent);
} else {
document.addEventListener("DOMContentLoaded",fireContentLoadedEvent,false);
}
} else {
document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");
$("__onDOMContentLoaded").onreadystatechange = function() {
if (this.readyState == "complete") {
this.onreadystatechange = null;
fireContentLoadedEvent();
}
};
}
})();
/*------------------------------- DEPRECATED -------------------------------*/
Hash.toQueryString = Object.toQueryString;
var Toggle = { display: Element.toggle };
Element.Methods.childOf = Element.Methods.descendantOf;
var Insertion = {
Before: function(element,content) {
return Element.insert(element,{before:content});
},Top: function(element,content) {
return Element.insert(element,{top:content});
},Bottom: function(element,content) {
return Element.insert(element,{bottom:content});
},After: function(element,content) {
return Element.insert(element,{after:content});
}
};
var $continue = new Error('"throw $continue" is deprecated,use "return" instead');
// This should be moved to script.aculo.us; notice the deprecated methods
// further below,that map to the newer Element methods.
var Position = {
// set to true if needed,warning: firefox performance problems
// NOT neeeded for page scrolling,only if draggable contained in
// scrollable elements
includeScrollOffsets: false,// must be called before calling withinIncludingScrolloffset,every time the
// page is scrolled
prepare: function() {
this.deltaX =  window.pageXOffset
|| document.documentElement.scrollLeft
|| document.body.scrollLeft
|| 0;
this.deltaY =  window.pageYOffset
|| document.documentElement.scrollTop
|| document.body.scrollTop
|| 0;
},// caches x/y coordinate pair to use with overlap
within: function(element,x,y) {
if (this.includeScrollOffsets)
return this.withinIncludingScrolloffsets(element,x,y);
this.xcomp = x;
this.ycomp = y;
this.offset = Element.cumulativeOffset(element);
return (y >= this.offset[1] &&
y <  this.offset[1] + element.offsetHeight &&
x >= this.offset[0] &&
x <  this.offset[0] + element.offsetWidth);
},withinIncludingScrolloffsets: function(element,x,y) {
var offsetcache = Element.cumulativeScrollOffset(element);
this.xcomp = x + offsetcache[0] - this.deltaX;
this.ycomp = y + offsetcache[1] - this.deltaY;
this.offset = Element.cumulativeOffset(element);
return (this.ycomp >= this.offset[1] &&
this.ycomp <  this.offset[1] + element.offsetHeight &&
this.xcomp >= this.offset[0] &&
this.xcomp <  this.offset[0] + element.offsetWidth);
},// within must be called directly before
overlap: function(mode,element) {
if (!mode) return 0;
if (mode == 'vertical')
return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
element.offsetHeight;
if (mode == 'horizontal')
return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
element.offsetWidth;
},// Deprecation layer -- use newer Element methods now (1.5.2).
cumulativeOffset: Element.Methods.cumulativeOffset,positionedOffset: Element.Methods.positionedOffset,absolutize: function(element) {
Position.prepare();
return Element.absolutize(element);
},relativize: function(element) {
Position.prepare();
return Element.relativize(element);
},realOffset: Element.Methods.cumulativeScrollOffset,offsetParent: Element.Methods.getOffsetParent,page: Element.Methods.viewportOffset,clone: function(source,target,options) {
options = options || { };
return Element.clonePosition(target,source,options);
}
};
/*--------------------------------------------------------------------------*/
if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){
function iter(name) {
return name.blank() ? null : "[contains(concat(' ',@class,' '),' " + name + " ')]";
}
instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?
function(element,className) {
className = className.toString().strip();
var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);
return cond ? document._getElementsByXPath('.//*' + cond,element) : [];
} : function(element,className) {
className = className.toString().strip();
var elements = [],classNames = (/\s/.test(className) ? $w(className) : null);
if (!classNames && !className) return elements;
var nodes = $(element).getElementsByTagName('*');
className = ' ' + className + ' ';
for (var i = 0,child,cn; child = nodes[i]; i++) {
if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||
(classNames && classNames.all(function(name) {
return !name.toString().blank() && cn.include(' ' + name + ' ');
}))))
elements.push(Element.extend(child));
}
return elements;
};
return function(className,parentElement) {
return $(parentElement || document.body).getElementsByClassName(className);
};
}(Element.Methods);
/*--------------------------------------------------------------------------*/
Element.ClassNames = Class.create();
Element.ClassNames.prototype = {
initialize: function(element) {
this.element = $(element);
},_each: function(iterator) {
this.element.className.split(/\s+/).select(function(name) {
return name.length > 0;
})._each(iterator);
},set: function(className) {
this.element.className = className;
},add: function(classNameToAdd) {
if (this.include(classNameToAdd)) return;
this.set($A(this).concat(classNameToAdd).join(' '));
},remove: function(classNameToRemove) {
if (!this.include(classNameToRemove)) return;
this.set($A(this).without(classNameToRemove).join(' '));
},toString: function() {
return $A(this).join(' ');
}
};
Object.extend(Element.ClassNames.prototype,Enumerable);
/*--------------------------------------------------------------------------*/
Element.addMethods();
// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us,http://mir.aculo.us)
//
// Permission is hereby granted,free of charge,to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"),to deal in the Software without restriction,including
// without limitation the rights to use,copy,modify,merge,publish,// distribute,sublicense,and/or sell copies of the Software,and to
// permit persons to whom the Software is furnished to do so,subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS",WITHOUT WARRANTY OF ANY KIND,// EXPRESS OR IMPLIED,INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM,DAMAGES OR OTHER LIABILITY,WHETHER IN AN ACTION
// OF CONTRACT,TORT OR OTHERWISE,ARISING FROM,OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// For details,see the script.aculo.us web site: http://script.aculo.us/
var Scriptaculous = {
Version: '1.8.3',require: function(libraryName) {
try{
// inserting via DOM fails in Safari 2.0,so brute force approach
document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');
} catch(e) {
// for xhtml+xml served content,fall back to DOM methods
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = libraryName;
document.getElementsByTagName('head')[0].appendChild(script);
}
},REQUIRED_PROTOTYPE: '1.6.0.3',load: function() {
function convertVersionString(versionString) {
var v = versionString.replace(/_.*|\./g,'');
v = parseInt(v + '0'.times(4-v.length));
return versionString.indexOf('_') > -1 ? v-1 : v;
}
if((typeof Prototype=='undefined') ||
(typeof Element == 'undefined') ||
(typeof Element.Methods=='undefined') ||
(convertVersionString(Prototype.Version) <
convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))
throw("script.aculo.us requires the Prototype JavaScript framework >= " +
Scriptaculous.REQUIRED_PROTOTYPE);
var js = /scriptaculous\.js(\?.*)?$/;
$$('script[src]').findAll(function(s) {
return s.src.match(js);
}).each(function(s) {
var path = s.src.replace(js,''),includes = s.src.match(/\?.*load=([a-z,]*)/);
(includes ? includes[1] : 'builder,effects,dragdrop,controls,slider,sound').split(',').each(
function(include) { Scriptaculous.require(path+include+'.js') });
});
}
};
Scriptaculous.load();
// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us,http://mir.aculo.us)
//
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details,see the script.aculo.us web site: http://script.aculo.us/
var Builder = {
NODEMAP: {
AREA: 'map',CAPTION: 'table',COL: 'table',COLGROUP: 'table',LEGEND: 'fieldset',OPTGROUP: 'select',OPTION: 'select',PARAM: 'object',TBODY: 'table',TD: 'table',TFOOT: 'table',TH: 'table',THEAD: 'table',TR: 'table'
},// note: For Firefox < 1.5,OPTION and OPTGROUP tags are currently broken,//       due to a Firefox bug
node: function(elementName) {
elementName = elementName.toUpperCase();
// try innerHTML approach
var parentTag = this.NODEMAP[elementName] || 'div';
var parentElement = document.createElement(parentTag);
try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
parentElement.innerHTML = "<" + elementName + "></" + elementName + ">";
} catch(e) {}
var element = parentElement.firstChild || null;
// see if browser added wrapping tags
if(element && (element.tagName.toUpperCase() != elementName))
element = element.getElementsByTagName(elementName)[0];
// fallback to createElement approach
if(!element) element = document.createElement(elementName);
// abort if nothing could be created
if(!element) return;
// attributes (or text)
if(arguments[1])
if(this._isStringOrNumber(arguments[1]) ||
(arguments[1] instanceof Array) ||
arguments[1].tagName) {
this._children(element,arguments[1]);
} else {
var attrs = this._attributes(arguments[1]);
if(attrs.length) {
try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
parentElement.innerHTML = "<" +elementName + " " +
attrs + "></" + elementName + ">";
} catch(e) {}
element = parentElement.firstChild || null;
// workaround firefox 1.0.X bug
if(!element) {
element = document.createElement(elementName);
for(attr in arguments[1])
element[attr == 'class' ? 'className' : attr] = arguments[1][attr];
}
if(element.tagName.toUpperCase() != elementName)
element = parentElement.getElementsByTagName(elementName)[0];
}
}
// text,or array of children
if(arguments[2])
this._children(element,arguments[2]);
return $(element);
},_text: function(text) {
return document.createTextNode(text);
},ATTR_MAP: {
'className': 'class','htmlFor': 'for'
},_attributes: function(attributes) {
var attrs = [];
for(attribute in attributes)
attrs.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] : attribute) +
'="' + attributes[attribute].toString().escapeHTML().gsub(/"/,'&quot;') + '"');
return attrs.join(" ");
},_children: function(element,children) {
if(children.tagName) {
element.appendChild(children);
return;
}
if(typeof children=='object') { // array can hold nodes and text
children.flatten().each( function(e) {
if(typeof e=='object')
element.appendChild(e);
else
if(Builder._isStringOrNumber(e))
element.appendChild(Builder._text(e));
});
} else
if(Builder._isStringOrNumber(children))
element.appendChild(Builder._text(children));
},_isStringOrNumber: function(param) {
return(typeof param=='string' || typeof param=='number');
},build: function(html) {
var element = this.node('div');
$(element).update(html.strip());
return element.down();
},dump: function(scope) {
if(typeof scope != 'object' && typeof scope != 'function') scope = window; //global scope
var tags = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY " +
"BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET " +
"FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+
"KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+
"PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+
"TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);
tags.each( function(tag){
scope[tag] = function() {
return Builder.node.apply(Builder,[tag].concat($A(arguments)));
};
});
}
};
// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us,http://mir.aculo.us)
// Contributors:
//  Justin Palmer (http://encytemedia.com/)
//  Mark Pilgrim (http://diveintomark.org/)
//  Martin Bialasinki
//
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details,see the script.aculo.us web site: http://script.aculo.us/
// converts rgb() and #xxx to #xxxxxx format,// returns self (or first argument) if not convertable
String.prototype.parseColor = function() {
var color = '#';
if (this.slice(0,4) == 'rgb(') {
var cols = this.slice(4,this.length-1).split(',');
var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);
} else {
if (this.slice(0,1) == '#') {
if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();
if (this.length==7) color = this.toLowerCase();
}
}
return (color.length==7 ? color : (arguments[0] || this));
};
/*--------------------------------------------------------------------------*/
Element.collectTextNodes = function(element) {
return $A($(element).childNodes).collect( function(node) {
return (node.nodeType==3 ? node.nodeValue :
(node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
}).flatten().join('');
};
Element.collectTextNodesIgnoreClass = function(element,className) {
return $A($(element).childNodes).collect( function(node) {
return (node.nodeType==3 ? node.nodeValue :
((node.hasChildNodes() && !Element.hasClassName(node,className)) ?
Element.collectTextNodesIgnoreClass(node,className) : ''));
}).flatten().join('');
};
Element.setContentZoom = function(element,percent) {
element = $(element);
element.setStyle({fontSize: (percent/100) + 'em'});
if (Prototype.Browser.WebKit) window.scrollBy(0,0);
return element;
};
Element.getInlineOpacity = function(element){
return $(element).style.opacity || '';
};
Element.forceRerendering = function(element) {
try {
element = $(element);
var n = document.createTextNode(' ');
element.appendChild(n);
element.removeChild(n);
} catch(e) { }
};
/*--------------------------------------------------------------------------*/
var Effect = {
_elementDoesNotExistError: {
name: 'ElementDoesNotExistError',message: 'The specified DOM element does not exist,but is required for this effect to operate'
},Transitions: {
linear: Prototype.K,sinoidal: function(pos) {
return (-Math.cos(pos*Math.PI)/2) + .5;
},reverse: function(pos) {
return 1-pos;
},flicker: function(pos) {
var pos = ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4;
return pos > 1 ? 1 : pos;
},wobble: function(pos) {
return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5;
},pulse: function(pos,pulses) {
return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5;
},spring: function(pos) {
return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));
},none: function(pos) {
return 0;
},full: function(pos) {
return 1;
}
},DefaultOptions: {
duration:   1.0,// seconds
fps:        100,// 100= assume 66fps max.
sync:       false,// true for combining
from:       0.0,to:         1.0,delay:      0.0,queue:      'parallel'
},tagifyText: function(element) {
var tagifyStyle = 'position:relative';
if (Prototype.Browser.IE) tagifyStyle += ';zoom:1';
element = $(element);
$A(element.childNodes).each( function(child) {
if (child.nodeType==3) {
child.nodeValue.toArray().each( function(character) {
element.insertBefore(
new Element('span',{style: tagifyStyle}).update(
character == ' ' ? String.fromCharCode(160) : character),child);
});
Element.remove(child);
}
});
},multiple: function(element,effect) {
var elements;
if (((typeof element == 'object') ||
Object.isFunction(element)) &&
(element.length))
elements = element;
else
elements = $(element).childNodes;
var options = Object.extend({
speed: 0.1,delay: 0.0
},arguments[2] || { });
var masterDelay = options.delay;
$A(elements).each( function(element,index) {
new effect(element,Object.extend(options,{ delay: index * options.speed + masterDelay }));
});
},PAIRS: {
'slide':  ['SlideDown','SlideUp'],'blind':  ['BlindDown','BlindUp'],'appear': ['Appear','Fade']
},toggle: function(element,effect,options) {
element = $(element);
effect  = (effect || 'appear').toLowerCase();
return Effect[ Effect.PAIRS[ effect ][ element.visible() ? 1 : 0 ] ](element,Object.extend({
queue: { position:'end',scope:(element.id || 'global'),limit: 1 }
},options || {}));
}
};
Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;
/* ------------- core effects ------------- */
Effect.ScopedQueue = Class.create(Enumerable,{
initialize: function() {
this.effects  = [];
this.interval = null;
},_each: function(iterator) {
this.effects._each(iterator);
},add: function(effect) {
var timestamp = new Date().getTime();
var position = Object.isString(effect.options.queue) ?
effect.options.queue : effect.options.queue.position;
switch(position) {
case 'front':
// move unstarted effects after this effect
this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
e.startOn  += effect.finishOn;
e.finishOn += effect.finishOn;
});
break;
case 'with-last':
timestamp = this.effects.pluck('startOn').max() || timestamp;
break;
case 'end':
// start effect after last queued effect has finished
timestamp = this.effects.pluck('finishOn').max() || timestamp;
break;
}
effect.startOn  += timestamp;
effect.finishOn += timestamp;
if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
this.effects.push(effect);
if (!this.interval)
this.interval = setInterval(this.loop.bind(this),15);
},remove: function(effect) {
this.effects = this.effects.reject(function(e) { return e==effect });
if (this.effects.length == 0) {
clearInterval(this.interval);
this.interval = null;
}
},loop: function() {
var timePos = new Date().getTime();
for(var i=0,len=this.effects.length;i<len;i++)
this.effects[i] && this.effects[i].loop(timePos);
}
});
Effect.Queues = {
instances: $H(),get: function(queueName) {
if (!Object.isString(queueName)) return queueName;
return this.instances.get(queueName) ||
this.instances.set(queueName,new Effect.ScopedQueue());
}
};
Effect.Queue = Effect.Queues.get('global');
Effect.Base = Class.create({
position: null,start: function(options) {
if (options && options.transition === false) options.transition = Effect.Transitions.linear;
this.options      = Object.extend(Object.extend({ },Effect.DefaultOptions),options || { });
this.currentFrame = 0;
this.state        = 'idle';
this.startOn      = this.options.delay*1000;
this.finishOn     = this.startOn+(this.options.duration*1000);
this.fromToDelta  = this.options.to-this.options.from;
this.totalTime    = this.finishOn-this.startOn;
this.totalFrames  = this.options.fps*this.options.duration;
this.render = (function() {
function dispatch(effect,eventName) {
if (effect.options[eventName + 'Internal'])
effect.options[eventName + 'Internal'](effect);
if (effect.options[eventName])
effect.options[eventName](effect);
}
return function(pos) {
if (this.state === "idle") {
this.state = "running";
dispatch(this,'beforeSetup');
if (this.setup) this.setup();
dispatch(this,'afterSetup');
}
if (this.state === "running") {
pos = (this.options.transition(pos) * this.fromToDelta) + this.options.from;
this.position = pos;
dispatch(this,'beforeUpdate');
if (this.update) this.update(pos);
dispatch(this,'afterUpdate');
}
};
})();
this.event('beforeStart');
if (!this.options.sync)
Effect.Queues.get(Object.isString(this.options.queue) ?
'global' : this.options.queue.scope).add(this);
},loop: function(timePos) {
if (timePos >= this.startOn) {
if (timePos >= this.finishOn) {
this.render(1.0);
this.cancel();
this.event('beforeFinish');
if (this.finish) this.finish();
this.event('afterFinish');
return;
}
var pos   = (timePos - this.startOn) / this.totalTime,frame = (pos * this.totalFrames).round();
if (frame > this.currentFrame) {
this.render(pos);
this.currentFrame = frame;
}
}
},cancel: function() {
if (!this.options.sync)
Effect.Queues.get(Object.isString(this.options.queue) ?
'global' : this.options.queue.scope).remove(this);
this.state = 'finished';
},event: function(eventName) {
if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
if (this.options[eventName]) this.options[eventName](this);
},inspect: function() {
var data = $H();
for(property in this)
if (!Object.isFunction(this[property])) data.set(property,this[property]);
return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>';
}
});
Effect.Parallel = Class.create(Effect.Base,{
initialize: function(effects) {
this.effects = effects || [];
this.start(arguments[1]);
},update: function(position) {
this.effects.invoke('render',position);
},finish: function(position) {
this.effects.each( function(effect) {
effect.render(1.0);
effect.cancel();
effect.event('beforeFinish');
if (effect.finish) effect.finish(position);
effect.event('afterFinish');
});
}
});
Effect.Tween = Class.create(Effect.Base,{
initialize: function(object,from,to) {
object = Object.isString(object) ? $(object) : object;
var args = $A(arguments),method = args.last(),options = args.length == 5 ? args[3] : null;
this.method = Object.isFunction(method) ? method.bind(object) :
Object.isFunction(object[method]) ? object[method].bind(object) :
function(value) { object[method] = value };
this.start(Object.extend({ from: from,to: to },options || { }));
},update: function(position) {
this.method(position);
}
});
Effect.Event = Class.create(Effect.Base,{
initialize: function() {
this.start(Object.extend({ duration: 0 },arguments[0] || { }));
},update: Prototype.emptyFunction
});
Effect.Opacity = Class.create(Effect.Base,{
initialize: function(element) {
this.element = $(element);
if (!this.element) throw(Effect._elementDoesNotExistError);
// make this work on IE on elements without 'layout'
if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom: 1});
var options = Object.extend({
from: this.element.getOpacity() || 0.0,to:   1.0
},arguments[1] || { });
this.start(options);
},update: function(position) {
this.element.setOpacity(position);
}
});
Effect.Move = Class.create(Effect.Base,{
initialize: function(element) {
this.element = $(element);
if (!this.element) throw(Effect._elementDoesNotExistError);
var options = Object.extend({
x:    0,y:    0,mode: 'relative'
},arguments[1] || { });
this.start(options);
},setup: function() {
this.element.makePositioned();
this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
this.originalTop  = parseFloat(this.element.getStyle('top')  || '0');
if (this.options.mode == 'absolute') {
this.options.x = this.options.x - this.originalLeft;
this.options.y = this.options.y - this.originalTop;
}
},update: function(position) {
this.element.setStyle({
left: (this.options.x  * position + this.originalLeft).round() + 'px',top:  (this.options.y  * position + this.originalTop).round()  + 'px'
});
}
});
// for backwards compatibility
Effect.MoveBy = function(element,toTop,toLeft) {
return new Effect.Move(element,Object.extend({ x: toLeft,y: toTop },arguments[3] || { }));
};
Effect.Scale = Class.create(Effect.Base,{
initialize: function(element,percent) {
this.element = $(element);
if (!this.element) throw(Effect._elementDoesNotExistError);
var options = Object.extend({
scaleX: true,scaleY: true,scaleContent: true,scaleFromCenter: false,scaleMode: 'box',// 'box' or 'contents' or { } with provided values
scaleFrom: 100.0,scaleTo:   percent
},arguments[2] || { });
this.start(options);
},setup: function() {
this.restoreAfterFinish = this.options.restoreAfterFinish || false;
this.elementPositioning = this.element.getStyle('position');
this.originalStyle = { };
['top','left','width','height','fontSize'].each( function(k) {
this.originalStyle[k] = this.element.style[k];
}.bind(this));
this.originalTop  = this.element.offsetTop;
this.originalLeft = this.element.offsetLeft;
var fontSize = this.element.getStyle('font-size') || '100%';
['em','px','%','pt'].each( function(fontSizeType) {
if (fontSize.indexOf(fontSizeType)>0) {
this.fontSize     = parseFloat(fontSize);
this.fontSizeType = fontSizeType;
}
}.bind(this));
this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
this.dims = null;
if (this.options.scaleMode=='box')
this.dims = [this.element.offsetHeight,this.element.offsetWidth];
if (/^content/.test(this.options.scaleMode))
this.dims = [this.element.scrollHeight,this.element.scrollWidth];
if (!this.dims)
this.dims = [this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];
},update: function(position) {
var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
if (this.options.scaleContent && this.fontSize)
this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
this.setDimensions(this.dims[0] * currentScale,this.dims[1] * currentScale);
},finish: function(position) {
if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
},setDimensions: function(height,width) {
var d = { };
if (this.options.scaleX) d.width = width.round() + 'px';
if (this.options.scaleY) d.height = height.round() + 'px';
if (this.options.scaleFromCenter) {
var topd  = (height - this.dims[0])/2;
var leftd = (width  - this.dims[1])/2;
if (this.elementPositioning == 'absolute') {
if (this.options.scaleY) d.top = this.originalTop-topd + 'px';
if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
} else {
if (this.options.scaleY) d.top = -topd + 'px';
if (this.options.scaleX) d.left = -leftd + 'px';
}
}
this.element.setStyle(d);
}
});
Effect.Highlight = Class.create(Effect.Base,{
initialize: function(element) {
this.element = $(element);
if (!this.element) throw(Effect._elementDoesNotExistError);
var options = Object.extend({ startcolor: '#ffff99' },arguments[1] || { });
this.start(options);
},setup: function() {
// Prevent executing on elements not in the layout flow
if (this.element.getStyle('display')=='none') { this.cancel(); return; }
// Disable background image during the effect
this.oldStyle = { };
if (!this.options.keepBackgroundImage) {
this.oldStyle.backgroundImage = this.element.getStyle('background-image');
this.element.setStyle({backgroundImage: 'none'});
}
if (!this.options.endcolor)
this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
if (!this.options.restorecolor)
this.options.restorecolor = this.element.getStyle('background-color');
// init color calculations
this._base  = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));
},update: function(position) {
this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) });
},finish: function() {
this.element.setStyle(Object.extend(this.oldStyle,{
backgroundColor: this.options.restorecolor
}));
}
});
Effect.ScrollTo = function(element) {
var options = arguments[1] || { },scrollOffsets = document.viewport.getScrollOffsets(),elementOffsets = $(element).cumulativeOffset();
if (options.offset) elementOffsets[1] += options.offset;
return new Effect.Tween(null,scrollOffsets.top,elementOffsets[1],options,function(p){ scrollTo(scrollOffsets.left,p.round()); }
);
};
/* ------------- combination effects ------------- */
Effect.Fade = function(element) {
element = $(element);
var oldOpacity = element.getInlineOpacity();
var options = Object.extend({
from: element.getOpacity() || 1.0,to:   0.0,afterFinishInternal: function(effect) {
if (effect.options.to!=0) return;
effect.element.hide().setStyle({opacity: oldOpacity});
}
},arguments[1] || { });
return new Effect.Opacity(element,options);
};
Effect.Appear = function(element) {
element = $(element);
var options = Object.extend({
from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),to:   1.0,// force Safari to render floated elements properly
afterFinishInternal: function(effect) {
effect.element.forceRerendering();
},beforeSetup: function(effect) {
effect.element.setOpacity(effect.options.from).show();
}},arguments[1] || { });
return new Effect.Opacity(element,options);
};
Effect.Puff = function(element) {
element = $(element);
var oldStyle = {
opacity: element.getInlineOpacity(),position: element.getStyle('position'),top:  element.style.top,left: element.style.left,width: element.style.width,height: element.style.height
};
return new Effect.Parallel(
[ new Effect.Scale(element,200,{ sync: true,scaleFromCenter: true,scaleContent: true,restoreAfterFinish: true }),new Effect.Opacity(element,{ sync: true,to: 0.0 } ) ],Object.extend({ duration: 1.0,beforeSetupInternal: function(effect) {
Position.absolutize(effect.effects[0].element);
},afterFinishInternal: function(effect) {
effect.effects[0].element.hide().setStyle(oldStyle); }
},arguments[1] || { })
);
};
Effect.BlindUp = function(element) {
element = $(element);
element.makeClipping();
return new Effect.Scale(element,0,Object.extend({ scaleContent: false,scaleX: false,restoreAfterFinish: true,afterFinishInternal: function(effect) {
effect.element.hide().undoClipping();
}
},arguments[1] || { })
);
};
Effect.BlindDown = function(element) {
element = $(element);
var elementDimensions = element.getDimensions();
return new Effect.Scale(element,100,Object.extend({
scaleContent: false,scaleX: false,scaleFrom: 0,scaleMode: {originalHeight: elementDimensions.height,originalWidth: elementDimensions.width},restoreAfterFinish: true,afterSetup: function(effect) {
effect.element.makeClipping().setStyle({height: '0px'}).show();
},afterFinishInternal: function(effect) {
effect.element.undoClipping();
}
},arguments[1] || { }));
};
Effect.SwitchOff = function(element) {
element = $(element);
var oldOpacity = element.getInlineOpacity();
return new Effect.Appear(element,Object.extend({
duration: 0.4,from: 0,transition: Effect.Transitions.flicker,afterFinishInternal: function(effect) {
new Effect.Scale(effect.element,1,{
duration: 0.3,scaleFromCenter: true,scaleX: false,scaleContent: false,restoreAfterFinish: true,beforeSetup: function(effect) {
effect.element.makePositioned().makeClipping();
},afterFinishInternal: function(effect) {
effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
}
});
}
},arguments[1] || { }));
};
Effect.DropOut = function(element) {
element = $(element);
var oldStyle = {
top: element.getStyle('top'),left: element.getStyle('left'),opacity: element.getInlineOpacity() };
return new Effect.Parallel(
[ new Effect.Move(element,{x: 0,y: 100,sync: true }),new Effect.Opacity(element,{ sync: true,to: 0.0 }) ],Object.extend(
{ duration: 0.5,beforeSetup: function(effect) {
effect.effects[0].element.makePositioned();
},afterFinishInternal: function(effect) {
effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
}
},arguments[1] || { }));
};
Effect.Shake = function(element) {
element = $(element);
var options = Object.extend({
distance: 20,duration: 0.5
},arguments[1] || {});
var distance = parseFloat(options.distance);
var split = parseFloat(options.duration) / 10.0;
var oldStyle = {
top: element.getStyle('top'),left: element.getStyle('left') };
return new Effect.Move(element,{ x:  distance,y: 0,duration: split,afterFinishInternal: function(effect) {
new Effect.Move(effect.element,{ x: -distance*2,y: 0,duration: split*2,afterFinishInternal: function(effect) {
new Effect.Move(effect.element,{ x:  distance*2,y: 0,duration: split*2,afterFinishInternal: function(effect) {
new Effect.Move(effect.element,{ x: -distance*2,y: 0,duration: split*2,afterFinishInternal: function(effect) {
new Effect.Move(effect.element,{ x:  distance*2,y: 0,duration: split*2,afterFinishInternal: function(effect) {
new Effect.Move(effect.element,{ x: -distance,y: 0,duration: split,afterFinishInternal: function(effect) {
effect.element.undoPositioned().setStyle(oldStyle);
}}); }}); }}); }}); }}); }});
};
Effect.SlideDown = function(element) {
element = $(element).cleanWhitespace();
// SlideDown need to have the content of the element wrapped in a container element with fixed height!
var oldInnerBottom = element.down().getStyle('bottom');
var elementDimensions = element.getDimensions();
return new Effect.Scale(element,100,Object.extend({
scaleContent: false,scaleX: false,scaleFrom: window.opera ? 0 : 1,scaleMode: {originalHeight: elementDimensions.height,originalWidth: elementDimensions.width},restoreAfterFinish: true,afterSetup: function(effect) {
effect.element.makePositioned();
effect.element.down().makePositioned();
if (window.opera) effect.element.setStyle({top: ''});
effect.element.makeClipping().setStyle({height: '0px'}).show();
},afterUpdateInternal: function(effect) {
effect.element.down().setStyle({bottom:
(effect.dims[0] - effect.element.clientHeight) + 'px' });
},afterFinishInternal: function(effect) {
effect.element.undoClipping().undoPositioned();
effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }
},arguments[1] || { })
);
};
Effect.SlideUp = function(element) {
element = $(element).cleanWhitespace();
var oldInnerBottom = element.down().getStyle('bottom');
var elementDimensions = element.getDimensions();
return new Effect.Scale(element,window.opera ? 0 : 1,Object.extend({ scaleContent: false,scaleX: false,scaleMode: 'box',scaleFrom: 100,scaleMode: {originalHeight: elementDimensions.height,originalWidth: elementDimensions.width},restoreAfterFinish: true,afterSetup: function(effect) {
effect.element.makePositioned();
effect.element.down().makePositioned();
if (window.opera) effect.element.setStyle({top: ''});
effect.element.makeClipping().show();
},afterUpdateInternal: function(effect) {
effect.element.down().setStyle({bottom:
(effect.dims[0] - effect.element.clientHeight) + 'px' });
},afterFinishInternal: function(effect) {
effect.element.hide().undoClipping().undoPositioned();
effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom});
}
},arguments[1] || { })
);
};
// Bug in opera makes the TD containing this element expand for a instance after finish
Effect.Squish = function(element) {
return new Effect.Scale(element,window.opera ? 1 : 0,{
restoreAfterFinish: true,beforeSetup: function(effect) {
effect.element.makeClipping();
},afterFinishInternal: function(effect) {
effect.element.hide().undoClipping();
}
});
};
Effect.Grow = function(element) {
element = $(element);
var options = Object.extend({
direction: 'center',moveTransition: Effect.Transitions.sinoidal,scaleTransition: Effect.Transitions.sinoidal,opacityTransition: Effect.Transitions.full
},arguments[1] || { });
var oldStyle = {
top: element.style.top,left: element.style.left,height: element.style.height,width: element.style.width,opacity: element.getInlineOpacity() };
var dims = element.getDimensions();
var initialMoveX,initialMoveY;
var moveX,moveY;
switch (options.direction) {
case 'top-left':
initialMoveX = initialMoveY = moveX = moveY = 0;
break;
case 'top-right':
initialMoveX = dims.width;
initialMoveY = moveY = 0;
moveX = -dims.width;
break;
case 'bottom-left':
initialMoveX = moveX = 0;
initialMoveY = dims.height;
moveY = -dims.height;
break;
case 'bottom-right':
initialMoveX = dims.width;
initialMoveY = dims.height;
moveX = -dims.width;
moveY = -dims.height;
break;
case 'center':
initialMoveX = dims.width / 2;
initialMoveY = dims.height / 2;
moveX = -dims.width / 2;
moveY = -dims.height / 2;
break;
}
return new Effect.Move(element,{
x: initialMoveX,y: initialMoveY,duration: 0.01,beforeSetup: function(effect) {
effect.element.hide().makeClipping().makePositioned();
},afterFinishInternal: function(effect) {
new Effect.Parallel(
[ new Effect.Opacity(effect.element,{ sync: true,to: 1.0,from: 0.0,transition: options.opacityTransition }),new Effect.Move(effect.element,{ x: moveX,y: moveY,sync: true,transition: options.moveTransition }),new Effect.Scale(effect.element,100,{
scaleMode: { originalHeight: dims.height,originalWidth: dims.width },sync: true,scaleFrom: window.opera ? 1 : 0,transition: options.scaleTransition,restoreAfterFinish: true})
],Object.extend({
beforeSetup: function(effect) {
effect.effects[0].element.setStyle({height: '0px'}).show();
},afterFinishInternal: function(effect) {
effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);
}
},options)
);
}
});
};
Effect.Shrink = function(element) {
element = $(element);
var options = Object.extend({
direction: 'center',moveTransition: Effect.Transitions.sinoidal,scaleTransition: Effect.Transitions.sinoidal,opacityTransition: Effect.Transitions.none
},arguments[1] || { });
var oldStyle = {
top: element.style.top,left: element.style.left,height: element.style.height,width: element.style.width,opacity: element.getInlineOpacity() };
var dims = element.getDimensions();
var moveX,moveY;
switch (options.direction) {
case 'top-left':
moveX = moveY = 0;
break;
case 'top-right':
moveX = dims.width;
moveY = 0;
break;
case 'bottom-left':
moveX = 0;
moveY = dims.height;
break;
case 'bottom-right':
moveX = dims.width;
moveY = dims.height;
break;
case 'center':
moveX = dims.width / 2;
moveY = dims.height / 2;
break;
}
return new Effect.Parallel(
[ new Effect.Opacity(element,{ sync: true,to: 0.0,from: 1.0,transition: options.opacityTransition }),new Effect.Scale(element,window.opera ? 1 : 0,{ sync: true,transition: options.scaleTransition,restoreAfterFinish: true}),new Effect.Move(element,{ x: moveX,y: moveY,sync: true,transition: options.moveTransition })
],Object.extend({
beforeStartInternal: function(effect) {
effect.effects[0].element.makePositioned().makeClipping();
},afterFinishInternal: function(effect) {
effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
},options)
);
};
Effect.Pulsate = function(element) {
element = $(element);
var options    = arguments[1] || { },oldOpacity = element.getInlineOpacity(),transition = options.transition || Effect.Transitions.linear,reverser   = function(pos){
return 1 - transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5);
};
return new Effect.Opacity(element,Object.extend(Object.extend({  duration: 2.0,from: 0,afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
},options),{transition: reverser}));
};
Effect.Fold = function(element) {
element = $(element);
var oldStyle = {
top: element.style.top,left: element.style.left,width: element.style.width,height: element.style.height };
element.makeClipping();
return new Effect.Scale(element,5,Object.extend({
scaleContent: false,scaleX: false,afterFinishInternal: function(effect) {
new Effect.Scale(element,1,{
scaleContent: false,scaleY: false,afterFinishInternal: function(effect) {
effect.element.hide().undoClipping().setStyle(oldStyle);
} });
}},arguments[1] || { }));
};
Effect.Morph = Class.create(Effect.Base,{
initialize: function(element) {
this.element = $(element);
if (!this.element) throw(Effect._elementDoesNotExistError);
var options = Object.extend({
style: { }
},arguments[1] || { });
if (!Object.isString(options.style)) this.style = $H(options.style);
else {
if (options.style.include(':'))
this.style = options.style.parseStyle();
else {
this.element.addClassName(options.style);
this.style = $H(this.element.getStyles());
this.element.removeClassName(options.style);
var css = this.element.getStyles();
this.style = this.style.reject(function(style) {
return style.value == css[style.key];
});
options.afterFinishInternal = function(effect) {
effect.element.addClassName(effect.options.style);
effect.transforms.each(function(transform) {
effect.element.style[transform.style] = '';
});
};
}
}
this.start(options);
},setup: function(){
function parseColor(color){
if (!color || ['rgba(0,0,0,0)','transparent'].include(color)) color = '#ffffff';
color = color.parseColor();
return $R(0,2).map(function(i){
return parseInt( color.slice(i*2+1,i*2+3),16 );
});
}
this.transforms = this.style.map(function(pair){
var property = pair[0],value = pair[1],unit = null;
if (value.parseColor('#zzzzzz') != '#zzzzzz') {
value = value.parseColor();
unit  = 'color';
} else if (property == 'opacity') {
value = parseFloat(value);
if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom: 1});
} else if (Element.CSS_LENGTH.test(value)) {
var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/);
value = parseFloat(components[1]);
unit = (components.length == 3) ? components[2] : null;
}
var originalValue = this.element.getStyle(property);
return {
style: property.camelize(),originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0),targetValue: unit=='color' ? parseColor(value) : value,unit: unit
};
}.bind(this)).reject(function(transform){
return (
(transform.originalValue == transform.targetValue) ||
(
transform.unit != 'color' &&
(isNaN(transform.originalValue) || isNaN(transform.targetValue))
)
);
});
},update: function(position) {
var style = { },transform,i = this.transforms.length;
while(i--)
style[(transform = this.transforms[i]).style] =
transform.unit=='color' ? '#'+
(Math.round(transform.originalValue[0]+
(transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() +
(Math.round(transform.originalValue[1]+
(transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() +
(Math.round(transform.originalValue[2]+
(transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() :
(transform.originalValue +
(transform.targetValue - transform.originalValue) * position).toFixed(3) +
(transform.unit === null ? '' : transform.unit);
this.element.setStyle(style,true);
}
});
Effect.Transform = Class.create({
initialize: function(tracks){
this.tracks  = [];
this.options = arguments[1] || { };
this.addTracks(tracks);
},addTracks: function(tracks){
tracks.each(function(track){
track = $H(track);
var data = track.values().first();
this.tracks.push($H({
ids:     track.keys().first(),effect:  Effect.Morph,options: { style: data }
}));
}.bind(this));
return this;
},play: function(){
return new Effect.Parallel(
this.tracks.map(function(track){
var ids = track.get('ids'),effect = track.get('effect'),options = track.get('options');
var elements = [$(ids) || $$(ids)].flatten();
return elements.map(function(e){ return new effect(e,Object.extend({ sync:true },options)) });
}).flatten(),this.options
);
}
});
Element.CSS_PROPERTIES = $w(
'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' +
'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
'fontSize fontWeight height left letterSpacing lineHeight ' +
'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
'right textIndent top width wordSpacing zIndex');
Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
String.__parseStyleElement = document.createElement('div');
String.prototype.parseStyle = function(){
var style,styleRules = $H();
if (Prototype.Browser.WebKit)
style = new Element('div',{style:this}).style;
else {
String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>';
style = String.__parseStyleElement.childNodes[0].style;
}
Element.CSS_PROPERTIES.each(function(property){
if (style[property]) styleRules.set(property,style[property]);
});
if (Prototype.Browser.IE && this.include('opacity'))
styleRules.set('opacity',this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);
return styleRules;
};
if (document.defaultView && document.defaultView.getComputedStyle) {
Element.getStyles = function(element) {
var css = document.defaultView.getComputedStyle($(element),null);
return Element.CSS_PROPERTIES.inject({ },function(styles,property) {
styles[property] = css[property];
return styles;
});
};
} else {
Element.getStyles = function(element) {
element = $(element);
var css = element.currentStyle,styles;
styles = Element.CSS_PROPERTIES.inject({ },function(results,property) {
results[property] = css[property];
return results;
});
if (!styles.opacity) styles.opacity = element.getOpacity();
return styles;
};
}
Effect.Methods = {
morph: function(element,style) {
element = $(element);
new Effect.Morph(element,Object.extend({ style: style },arguments[2] || { }));
return element;
},visualEffect: function(element,effect,options) {
element = $(element);
var s = effect.dasherize().camelize(),klass = s.charAt(0).toUpperCase() + s.substring(1);
new Effect[klass](element,options);
return element;
},highlight: function(element,options) {
element = $(element);
new Effect.Highlight(element,options);
return element;
}
};
$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+
'pulsate shake puff squish switchOff dropOut').each(
function(effect) {
Effect.Methods[effect] = function(element,options){
element = $(element);
Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element,options);
return element;
};
}
);
$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(
function(f) { Effect.Methods[f] = Element[f]; }
);
Element.addMethods(Effect.Methods);
// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us,http://mir.aculo.us)
//
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details,see the script.aculo.us web site: http://script.aculo.us/
if(Object.isUndefined(Effect))
throw("dragdrop.js requires including script.aculo.us' effects.js library");
var Droppables = {
drops: [],remove: function(element) {
this.drops = this.drops.reject(function(d) { return d.element==$(element) });
},add: function(element) {
element = $(element);
var options = Object.extend({
greedy:     true,hoverclass: null,tree:       false
},arguments[1] || { });
// cache containers
if(options.containment) {
options._containers = [];
var containment = options.containment;
if(Object.isArray(containment)) {
containment.each( function(c) { options._containers.push($(c)) });
} else {
options._containers.push($(containment));
}
}
if(options.accept) options.accept = [options.accept].flatten();
Element.makePositioned(element); // fix IE
options.element = element;
this.drops.push(options);
},findDeepestChild: function(drops) {
deepest = drops[0];
for (i = 1; i < drops.length; ++i)
if (Element.isParent(drops[i].element,deepest.element))
deepest = drops[i];
return deepest;
},isContained: function(element,drop) {
var containmentNode;
if(drop.tree) {
containmentNode = element.treeNode;
} else {
containmentNode = element.parentNode;
}
return drop._containers.detect(function(c) { return containmentNode == c });
},isAffected: function(point,element,drop) {
return (
(drop.element!=element) &&
((!drop._containers) ||
this.isContained(element,drop)) &&
((!drop.accept) ||
(Element.classNames(element).detect(
function(v) { return drop.accept.include(v) } ) )) &&
Position.within(drop.element,point[0],point[1]) );
},deactivate: function(drop) {
if(drop.hoverclass)
Element.removeClassName(drop.element,drop.hoverclass);
this.last_active = null;
},activate: function(drop) {
if(drop.hoverclass)
Element.addClassName(drop.element,drop.hoverclass);
this.last_active = drop;
},show: function(point,element) {
if(!this.drops.length) return;
var drop,affected = [];
this.drops.each( function(drop) {
if(Droppables.isAffected(point,element,drop))
affected.push(drop);
});
if(affected.length>0)
drop = Droppables.findDeepestChild(affected);
if(this.last_active && this.last_active != drop) this.deactivate(this.last_active);
if (drop) {
Position.within(drop.element,point[0],point[1]);
if(drop.onHover)
drop.onHover(element,drop.element,Position.overlap(drop.overlap,drop.element));
if (drop != this.last_active) Droppables.activate(drop);
}
},fire: function(event,element) {
if(!this.last_active) return;
Position.prepare();
if (this.isAffected([Event.pointerX(event),Event.pointerY(event)],element,this.last_active))
if (this.last_active.onDrop) {
this.last_active.onDrop(element,this.last_active.element,event);
return true;
}
},reset: function() {
if(this.last_active)
this.deactivate(this.last_active);
}
};
var Draggables = {
drags: [],observers: [],register: function(draggable) {
if(this.drags.length == 0) {
this.eventMouseUp   = this.endDrag.bindAsEventListener(this);
this.eventMouseMove = this.updateDrag.bindAsEventListener(this);
this.eventKeypress  = this.keyPress.bindAsEventListener(this);
Event.observe(document,"mouseup",this.eventMouseUp);
Event.observe(document,"mousemove",this.eventMouseMove);
Event.observe(document,"keypress",this.eventKeypress);
}
this.drags.push(draggable);
},unregister: function(draggable) {
this.drags = this.drags.reject(function(d) { return d==draggable });
if(this.drags.length == 0) {
Event.stopObserving(document,"mouseup",this.eventMouseUp);
Event.stopObserving(document,"mousemove",this.eventMouseMove);
Event.stopObserving(document,"keypress",this.eventKeypress);
}
},activate: function(draggable) {
if(draggable.options.delay) {
this._timeout = setTimeout(function() {
Draggables._timeout = null;
window.focus();
Draggables.activeDraggable = draggable;
}.bind(this),draggable.options.delay);
} else {
window.focus(); // allows keypress events if window isn't currently focused,fails for Safari
this.activeDraggable = draggable;
}
},deactivate: function() {
this.activeDraggable = null;
},updateDrag: function(event) {
if(!this.activeDraggable) return;
var pointer = [Event.pointerX(event),Event.pointerY(event)];
// Mozilla-based browsers fire successive mousemove events with
// the same coordinates,prevent needless redrawing (moz bug?)
if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return;
this._lastPointer = pointer;
this.activeDraggable.updateDrag(event,pointer);
},endDrag: function(event) {
if(this._timeout) {
clearTimeout(this._timeout);
this._timeout = null;
}
if(!this.activeDraggable) return;
this._lastPointer = null;
this.activeDraggable.endDrag(event);
this.activeDraggable = null;
},keyPress: function(event) {
if(this.activeDraggable)
this.activeDraggable.keyPress(event);
},addObserver: function(observer) {
this.observers.push(observer);
this._cacheObserverCallbacks();
},removeObserver: function(element) {  // element instead of observer fixes mem leaks
this.observers = this.observers.reject( function(o) { return o.element==element });
this._cacheObserverCallbacks();
},notify: function(eventName,draggable,event) {  // 'onStart','onEnd','onDrag'
if(this[eventName+'Count'] > 0)
this.observers.each( function(o) {
if(o[eventName]) o[eventName](eventName,draggable,event);
});
if(draggable.options[eventName]) draggable.options[eventName](draggable,event);
},_cacheObserverCallbacks: function() {
['onStart','onEnd','onDrag'].each( function(eventName) {
Draggables[eventName+'Count'] = Draggables.observers.select(
function(o) { return o[eventName]; }
).length;
});
}
};
/*--------------------------------------------------------------------------*/
var Draggable = Class.create({
initialize: function(element) {
var defaults = {
handle: false,reverteffect: function(element,top_offset,left_offset) {
var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;
new Effect.Move(element,{ x: -left_offset,y: -top_offset,duration: dur,queue: {scope:'_draggable',position:'end'}
});
},endeffect: function(element) {
var toOpacity = Object.isNumber(element._opacity) ? element._opacity : 1.0;
new Effect.Opacity(element,{duration:0.2,from:0.7,to:toOpacity,queue: {scope:'_draggable',position:'end'},afterFinish: function(){
Draggable._dragging[element] = false
}
});
},zindex: 1000,revert: false,quiet: false,scroll: false,scrollSensitivity: 20,scrollSpeed: 15,snap: false,// false,or xy or [x,y] or function(x,y){ return [x,y] }
delay: 0
};
if(!arguments[1] || Object.isUndefined(arguments[1].endeffect))
Object.extend(defaults,{
starteffect: function(element) {
element._opacity = Element.getOpacity(element);
Draggable._dragging[element] = true;
new Effect.Opacity(element,{duration:0.2,from:element._opacity,to:0.7});
}
});
var options = Object.extend(defaults,arguments[1] || { });
this.element = $(element);
if(options.handle && Object.isString(options.handle))
this.handle = this.element.down('.'+options.handle,0);
if(!this.handle) this.handle = $(options.handle);
if(!this.handle) this.handle = this.element;
if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) {
options.scroll = $(options.scroll);
this._isScrollChild = Element.childOf(this.element,options.scroll);
}
Element.makePositioned(this.element); // fix IE
this.options  = options;
this.dragging = false;
this.eventMouseDown = this.initDrag.bindAsEventListener(this);
Event.observe(this.handle,"mousedown",this.eventMouseDown);
Draggables.register(this);
},destroy: function() {
Event.stopObserving(this.handle,"mousedown",this.eventMouseDown);
Draggables.unregister(this);
},currentDelta: function() {
return([
parseInt(Element.getStyle(this.element,'left') || '0'),parseInt(Element.getStyle(this.element,'top') || '0')]);
},initDrag: function(event) {
if(!Object.isUndefined(Draggable._dragging[this.element]) &&
Draggable._dragging[this.element]) return;
if(Event.isLeftClick(event)) {
// abort on form elements,fixes a Firefox issue
var src = Event.element(event);
if((tag_name = src.tagName.toUpperCase()) && (
tag_name=='INPUT' ||
tag_name=='SELECT' ||
tag_name=='OPTION' ||
tag_name=='BUTTON' ||
tag_name=='TEXTAREA')) return;
var pointer = [Event.pointerX(event),Event.pointerY(event)];
var pos     = this.element.cumulativeOffset();
this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) });
Draggables.activate(this);
Event.stop(event);
}
},startDrag: function(event) {
this.dragging = true;
if(!this.delta)
this.delta = this.currentDelta();
if(this.options.zindex) {
this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0);
this.element.style.zIndex = this.options.zindex;
}
if(this.options.ghosting) {
this._clone = this.element.cloneNode(true);
this._originallyAbsolute = (this.element.getStyle('position') == 'absolute');
if (!this._originallyAbsolute)
Position.absolutize(this.element);
this.element.parentNode.insertBefore(this._clone,this.element);
}
if(this.options.scroll) {
if (this.options.scroll == window) {
var where = this._getWindowScroll(this.options.scroll);
this.originalScrollLeft = where.left;
this.originalScrollTop = where.top;
} else {
this.originalScrollLeft = this.options.scroll.scrollLeft;
this.originalScrollTop = this.options.scroll.scrollTop;
}
}
Draggables.notify('onStart',this,event);
if(this.options.starteffect) this.options.starteffect(this.element);
},updateDrag: function(event,pointer) {
if(!this.dragging) this.startDrag(event);
if(!this.options.quiet){
Position.prepare();
Droppables.show(pointer,this.element);
}
Draggables.notify('onDrag',this,event);
this.draw(pointer);
if(this.options.change) this.options.change(this);
if(this.options.scroll) {
this.stopScrolling();
var p;
if (this.options.scroll == window) {
with(this._getWindowScroll(this.options.scroll)) { p = [ left,top,left+width,top+height ]; }
} else {
p = Position.page(this.options.scroll);
p[0] += this.options.scroll.scrollLeft + Position.deltaX;
p[1] += this.options.scroll.scrollTop + Position.deltaY;
p.push(p[0]+this.options.scroll.offsetWidth);
p.push(p[1]+this.options.scroll.offsetHeight);
}
var speed = [0,0];
if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity);
if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity);
if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity);
if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity);
this.startScrolling(speed);
}
// fix AppleWebKit rendering
if(Prototype.Browser.WebKit) window.scrollBy(0,0);
Event.stop(event);
},finishDrag: function(event,success) {
this.dragging = false;
if(this.options.quiet){
Position.prepare();
var pointer = [Event.pointerX(event),Event.pointerY(event)];
Droppables.show(pointer,this.element);
}
if(this.options.ghosting) {
if (!this._originallyAbsolute)
Position.relativize(this.element);
delete this._originallyAbsolute;
Element.remove(this._clone);
this._clone = null;
}
var dropped = false;
if(success) {
dropped = Droppables.fire(event,this.element);
if (!dropped) dropped = false;
}
if(dropped && this.options.onDropped) this.options.onDropped(this.element);
Draggables.notify('onEnd',this,event);
var revert = this.options.revert;
if(revert && Object.isFunction(revert)) revert = revert(this.element);
var d = this.currentDelta();
if(revert && this.options.reverteffect) {
if (dropped == 0 || revert != 'failure')
this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0]);
} else {
this.delta = d;
}
if(this.options.zindex)
this.element.style.zIndex = this.originalZ;
if(this.options.endeffect)
this.options.endeffect(this.element);
Draggables.deactivate(this);
Droppables.reset();
},keyPress: function(event) {
if(event.keyCode!=Event.KEY_ESC) return;
this.finishDrag(event,false);
Event.stop(event);
},endDrag: function(event) {
if(!this.dragging) return;
this.stopScrolling();
this.finishDrag(event,true);
Event.stop(event);
},draw: function(point) {
var pos = this.element.cumulativeOffset();
if(this.options.ghosting) {
var r   = Position.realOffset(this.element);
pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY;
}
var d = this.currentDelta();
pos[0] -= d[0]; pos[1] -= d[1];
if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) {
pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft;
pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop;
}
var p = [0,1].map(function(i){
return (point[i]-pos[i]-this.offset[i])
}.bind(this));
if(this.options.snap) {
if(Object.isFunction(this.options.snap)) {
p = this.options.snap(p[0],p[1],this);
} else {
if(Object.isArray(this.options.snap)) {
p = p.map( function(v,i) {
return (v/this.options.snap[i]).round()*this.options.snap[i] }.bind(this));
} else {
p = p.map( function(v) {
return (v/this.options.snap).round()*this.options.snap }.bind(this));
}
}}
var style = this.element.style;
if((!this.options.constraint) || (this.options.constraint=='horizontal'))
style.left = p[0] + "px";
if((!this.options.constraint) || (this.options.constraint=='vertical'))
style.top  = p[1] + "px";
if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering
},stopScrolling: function() {
if(this.scrollInterval) {
clearInterval(this.scrollInterval);
this.scrollInterval = null;
Draggables._lastScrollPointer = null;
}
},startScrolling: function(speed) {
if(!(speed[0] || speed[1])) return;
this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];
this.lastScrolled = new Date();
this.scrollInterval = setInterval(this.scroll.bind(this),10);
},scroll: function() {
var current = new Date();
var delta = current - this.lastScrolled;
this.lastScrolled = current;
if(this.options.scroll == window) {
with (this._getWindowScroll(this.options.scroll)) {
if (this.scrollSpeed[0] || this.scrollSpeed[1]) {
var d = delta / 1000;
this.options.scroll.scrollTo( left + d*this.scrollSpeed[0],top + d*this.scrollSpeed[1] );
}
}
} else {
this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000;
this.options.scroll.scrollTop  += this.scrollSpeed[1] * delta / 1000;
}
Position.prepare();
Droppables.show(Draggables._lastPointer,this.element);
Draggables.notify('onDrag',this);
if (this._isScrollChild) {
Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer);
Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000;
Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000;
if (Draggables._lastScrollPointer[0] < 0)
Draggables._lastScrollPointer[0] = 0;
if (Draggables._lastScrollPointer[1] < 0)
Draggables._lastScrollPointer[1] = 0;
this.draw(Draggables._lastScrollPointer);
}
if(this.options.change) this.options.change(this);
},_getWindowScroll: function(w) {
var T,L,W,H;
with (w.document) {
if (w.document.documentElement && documentElement.scrollTop) {
T = documentElement.scrollTop;
L = documentElement.scrollLeft;
} else if (w.document.body) {
T = body.scrollTop;
L = body.scrollLeft;
}
if (w.innerWidth) {
W = w.innerWidth;
H = w.innerHeight;
} else if (w.document.documentElement && documentElement.clientWidth) {
W = documentElement.clientWidth;
H = documentElement.clientHeight;
} else {
W = body.offsetWidth;
H = body.offsetHeight;
}
}
return { top: T,left: L,width: W,height: H };
}
});
Draggable._dragging = { };
/*--------------------------------------------------------------------------*/
var SortableObserver = Class.create({
initialize: function(element,observer) {
this.element   = $(element);
this.observer  = observer;
this.lastValue = Sortable.serialize(this.element);
},onStart: function() {
this.lastValue = Sortable.serialize(this.element);
},onEnd: function() {
Sortable.unmark();
if(this.lastValue != Sortable.serialize(this.element))
this.observer(this.element)
}
});
var Sortable = {
SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,sortables: { },_findRootElement: function(element) {
while (element.tagName.toUpperCase() != "BODY") {
if(element.id && Sortable.sortables[element.id]) return element;
element = element.parentNode;
}
},options: function(element) {
element = Sortable._findRootElement($(element));
if(!element) return;
return Sortable.sortables[element.id];
},destroy: function(element){
element = $(element);
var s = Sortable.sortables[element.id];
if(s) {
Draggables.removeObserver(s.element);
s.droppables.each(function(d){ Droppables.remove(d) });
s.draggables.invoke('destroy');
delete Sortable.sortables[s.element.id];
}
},create: function(element) {
element = $(element);
var options = Object.extend({
element:     element,tag:         'li',// assumes li children,override with tag: 'tagname'
dropOnEmpty: false,tree:        false,treeTag:     'ul',overlap:     'vertical',// one of 'vertical','horizontal'
constraint:  'vertical',// one of 'vertical','horizontal',false
containment: element,// also takes array of elements (or id's); or false
handle:      false,// or a CSS class
only:        false,delay:       0,hoverclass:  null,ghosting:    false,quiet:       false,scroll:      false,scrollSensitivity: 20,scrollSpeed: 15,format:      this.SERIALIZE_RULE,// these take arrays of elements or ids and can be
// used for better initialization performance
elements:    false,handles:     false,onChange:    Prototype.emptyFunction,onUpdate:    Prototype.emptyFunction
},arguments[1] || { });
// clear any old sortable with same element
this.destroy(element);
// build options for the draggables
var options_for_draggable = {
revert:      true,quiet:       options.quiet,scroll:      options.scroll,scrollSpeed: options.scrollSpeed,scrollSensitivity: options.scrollSensitivity,delay:       options.delay,ghosting:    options.ghosting,constraint:  options.constraint,handle:      options.handle };
if(options.starteffect)
options_for_draggable.starteffect = options.starteffect;
if(options.reverteffect)
options_for_draggable.reverteffect = options.reverteffect;
else
if(options.ghosting) options_for_draggable.reverteffect = function(element) {
element.style.top  = 0;
element.style.left = 0;
};
if(options.endeffect)
options_for_draggable.endeffect = options.endeffect;
if(options.zindex)
options_for_draggable.zindex = options.zindex;
// build options for the droppables
var options_for_droppable = {
overlap:     options.overlap,containment: options.containment,tree:        options.tree,hoverclass:  options.hoverclass,onHover:     Sortable.onHover
};
var options_for_tree = {
onHover:      Sortable.onEmptyHover,overlap:      options.overlap,containment:  options.containment,hoverclass:   options.hoverclass
};
// fix for gecko engine
Element.cleanWhitespace(element);
options.draggables = [];
options.droppables = [];
// drop on empty handling
if(options.dropOnEmpty || options.tree) {
Droppables.add(element,options_for_tree);
options.droppables.push(element);
}
(options.elements || this.findElements(element,options) || []).each( function(e,i) {
var handle = options.handles ? $(options.handles[i]) :
(options.handle ? $(e).select('.' + options.handle)[0] : e);
options.draggables.push(
new Draggable(e,Object.extend(options_for_draggable,{ handle: handle })));
Droppables.add(e,options_for_droppable);
if(options.tree) e.treeNode = element;
options.droppables.push(e);
});
if(options.tree) {
(Sortable.findTreeElements(element,options) || []).each( function(e) {
Droppables.add(e,options_for_tree);
e.treeNode = element;
options.droppables.push(e);
});
}
// keep reference
this.sortables[element.identify()] = options;
// for onupdate
Draggables.addObserver(new SortableObserver(element,options.onUpdate));
},// return all suitable-for-sortable elements in a guaranteed order
findElements: function(element,options) {
return Element.findChildren(
element,options.only,options.tree ? true : false,options.tag);
},findTreeElements: function(element,options) {
return Element.findChildren(
element,options.only,options.tree ? true : false,options.treeTag);
},onHover: function(element,dropon,overlap) {
if(Element.isParent(dropon,element)) return;
if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) {
return;
} else if(overlap>0.5) {
Sortable.mark(dropon,'before');
if(dropon.previousSibling != element) {
var oldParentNode = element.parentNode;
element.style.visibility = "hidden"; // fix gecko rendering
dropon.parentNode.insertBefore(element,dropon);
if(dropon.parentNode!=oldParentNode)
Sortable.options(oldParentNode).onChange(element);
Sortable.options(dropon.parentNode).onChange(element);
}
} else {
Sortable.mark(dropon,'after');
var nextElement = dropon.nextSibling || null;
if(nextElement != element) {
var oldParentNode = element.parentNode;
element.style.visibility = "hidden"; // fix gecko rendering
dropon.parentNode.insertBefore(element,nextElement);
if(dropon.parentNode!=oldParentNode)
Sortable.options(oldParentNode).onChange(element);
Sortable.options(dropon.parentNode).onChange(element);
}
}
},onEmptyHover: function(element,dropon,overlap) {
var oldParentNode = element.parentNode;
var droponOptions = Sortable.options(dropon);
if(!Element.isParent(dropon,element)) {
var index;
var children = Sortable.findElements(dropon,{tag: droponOptions.tag,only: droponOptions.only});
var child = null;
if(children) {
var offset = Element.offsetSize(dropon,droponOptions.overlap) * (1.0 - overlap);
for (index = 0; index < children.length; index += 1) {
if (offset - Element.offsetSize (children[index],droponOptions.overlap) >= 0) {
offset -= Element.offsetSize (children[index],droponOptions.overlap);
} else if (offset - (Element.offsetSize (children[index],droponOptions.overlap) / 2) >= 0) {
child = index + 1 < children.length ? children[index + 1] : null;
break;
} else {
child = children[index];
break;
}
}
}
dropon.insertBefore(element,child);
Sortable.options(oldParentNode).onChange(element);
droponOptions.onChange(element);
}
},unmark: function() {
if(Sortable._marker) Sortable._marker.hide();
},mark: function(dropon,position) {
// mark on ghosting only
var sortable = Sortable.options(dropon.parentNode);
if(sortable && !sortable.ghosting) return;
if(!Sortable._marker) {
Sortable._marker =
($('dropmarker') || Element.extend(document.createElement('DIV'))).
hide().addClassName('dropmarker').setStyle({position:'absolute'});
document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);
}
var offsets = dropon.cumulativeOffset();
Sortable._marker.setStyle({left: offsets[0]+'px',top: offsets[1] + 'px'});
if(position=='after')
if(sortable.overlap == 'horizontal')
Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'});
else
Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'});
Sortable._marker.show();
},_tree: function(element,options,parent) {
var children = Sortable.findElements(element,options) || [];
for (var i = 0; i < children.length; ++i) {
var match = children[i].id.match(options.format);
if (!match) continue;
var child = {
id: encodeURIComponent(match ? match[1] : null),element: element,parent: parent,children: [],position: parent.children.length,container: $(children[i]).down(options.treeTag)
};
/* Get the element containing the children and recurse over it */
if (child.container)
this._tree(child.container,options,child);
parent.children.push (child);
}
return parent;
},tree: function(element) {
element = $(element);
var sortableOptions = this.options(element);
var options = Object.extend({
tag: sortableOptions.tag,treeTag: sortableOptions.treeTag,only: sortableOptions.only,name: element.id,format: sortableOptions.format
},arguments[1] || { });
var root = {
id: null,parent: null,children: [],container: element,position: 0
};
return Sortable._tree(element,options,root);
},/* Construct a [i] index for a particular node */
_constructIndex: function(node) {
var index = '';
do {
if (node.id) index = '[' + node.position + ']' + index;
} while ((node = node.parent) != null);
return index;
},sequence: function(element) {
element = $(element);
var options = Object.extend(this.options(element),arguments[1] || { });
return $(this.findElements(element,options) || []).map( function(item) {
return item.id.match(options.format) ? item.id.match(options.format)[1] : '';
});
},setSequence: function(element,new_sequence) {
element = $(element);
var options = Object.extend(this.options(element),arguments[2] || { });
var nodeMap = { };
this.findElements(element,options).each( function(n) {
if (n.id.match(options.format))
nodeMap[n.id.match(options.format)[1]] = [n,n.parentNode];
n.parentNode.removeChild(n);
});
new_sequence.each(function(ident) {
var n = nodeMap[ident];
if (n) {
n[1].appendChild(n[0]);
delete nodeMap[ident];
}
});
},serialize: function(element) {
element = $(element);
var options = Object.extend(Sortable.options(element),arguments[1] || { });
var name = encodeURIComponent(
(arguments[1] && arguments[1].name) ? arguments[1].name : element.id);
if (options.tree) {
return Sortable.tree(element,arguments[1]).children.map( function (item) {
return [name + Sortable._constructIndex(item) + "[id]=" +
encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));
}).flatten().join('&');
} else {
return Sortable.sequence(element,arguments[1]).map( function(item) {
return name + "[]=" + encodeURIComponent(item);
}).join('&');
}
}
};
// Returns true if child is contained within element
Element.isParent = function(child,element) {
if (!child.parentNode || child == element) return false;
if (child.parentNode == element) return true;
return Element.isParent(child.parentNode,element);
};
Element.findChildren = function(element,only,recursive,tagName) {
if(!element.hasChildNodes()) return null;
tagName = tagName.toUpperCase();
if(only) only = [only].flatten();
var elements = [];
$A(element.childNodes).each( function(e) {
if(e.tagName && e.tagName.toUpperCase()==tagName &&
(!only || (Element.classNames(e).detect(function(v) { return only.include(v) }))))
elements.push(e);
if(recursive) {
var grandchildren = Element.findChildren(e,only,recursive,tagName);
if(grandchildren) elements.push(grandchildren);
}
});
return (elements.length>0 ? elements.flatten() : []);
};
Element.offsetSize = function (element,type) {
return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')];
};
// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us,http://mir.aculo.us)
//           (c) 2005-2009 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
//           (c) 2005-2009 Jon Tirsen (http://www.tirsen.com)
// Contributors:
//  Richard Livsey
//  Rahul Bhargava
//  Rob Wills
//
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details,see the script.aculo.us web site: http://script.aculo.us/
// Autocompleter.Base handles all the autocompletion functionality
// that's independent of the data source for autocompletion. This
// includes drawing the autocompletion menu,observing keyboard
// and mouse events,and similar.
//
// Specific autocompleters need to provide,at the very least,// a getUpdatedChoices function that will be invoked every time
// the text inside the monitored textbox changes. This method
// should get the text for which to provide autocompletion by
// invoking this.getToken(),NOT by directly accessing
// this.element.value. This is to allow incremental tokenized
// autocompletion. Specific auto-completion logic (AJAX,etc)
// belongs in getUpdatedChoices.
//
// Tokenized incremental autocompletion is enabled automatically
// when an autocompleter is instantiated with the 'tokens' option
// in the options parameter,e.g.:
// new Ajax.Autocompleter('id','upd','/url/',{ tokens: ',' });
// will incrementally autocomplete with a comma as the token.
// Additionally,',' in the above example can be replaced with
// a token array,e.g. { tokens: [',','\n'] } which
// enables autocompletion on multiple tokens. This is most
// useful when one of the tokens is \n (a newline),as it
// allows smart autocompletion after linebreaks.
if(typeof Effect == 'undefined')
throw("controls.js requires including script.aculo.us' effects.js library");
var Autocompleter = { };
Autocompleter.Base = Class.create({
baseInitialize: function(element,update,options) {
element          = $(element);
this.element     = element;
this.update      = $(update);
this.hasFocus    = false;
this.changed     = false;
this.active      = false;
this.index       = 0;
this.entryCount  = 0;
this.oldElementValue = this.element.value;
if(this.setOptions)
this.setOptions(options);
else
this.options = options || { };
this.options.paramName    = this.options.paramName || this.element.name;
this.options.tokens       = this.options.tokens || [];
this.options.frequency    = this.options.frequency || 0.4;
this.options.minChars     = this.options.minChars || 1;
this.options.onShow       = this.options.onShow ||
function(element,update){
if(!update.style.position || update.style.position=='absolute') {
update.style.position = 'absolute';
Position.clone(element,update,{
setHeight: false,offsetTop: element.offsetHeight
});
}
Effect.Appear(update,{duration:0.15});
};
this.options.onHide = this.options.onHide ||
function(element,update){ new Effect.Fade(update,{duration:0.15}) };
if(typeof(this.options.tokens) == 'string')
this.options.tokens = new Array(this.options.tokens);
// Force carriage returns as token delimiters anyway
if (!this.options.tokens.include('\n'))
this.options.tokens.push('\n');
this.observer = null;
this.element.setAttribute('autocomplete','off');
Element.hide(this.update);
Event.observe(this.element,'blur',this.onBlur.bindAsEventListener(this));
Event.observe(this.element,'keydown',this.onKeyPress.bindAsEventListener(this));
},show: function() {
if(Element.getStyle(this.update,'display')=='none') this.options.onShow(this.element,this.update);
if(!this.iefix &&
(Prototype.Browser.IE) &&
(Element.getStyle(this.update,'position')=='absolute')) {
new Insertion.After(this.update,'<iframe id="' + this.update.id + '_iefix" '+
'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +
'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
this.iefix = $(this.update.id+'_iefix');
}
if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this),50);
},fixIEOverlapping: function() {
Position.clone(this.update,this.iefix,{setTop:(!this.update.style.height)});
this.iefix.style.zIndex = 1;
this.update.style.zIndex = 2;
Element.show(this.iefix);
},hide: function() {
this.stopIndicator();
if(Element.getStyle(this.update,'display')!='none') this.options.onHide(this.element,this.update);
if(this.iefix) Element.hide(this.iefix);
},startIndicator: function() {
if(this.options.indicator) Element.show(this.options.indicator);
},stopIndicator: function() {
if(this.options.indicator) Element.hide(this.options.indicator);
},onKeyPress: function(event) {
if(this.active)
switch(event.keyCode) {
case Event.KEY_TAB:
case Event.KEY_RETURN:
this.selectEntry();
Event.stop(event);
case Event.KEY_ESC:
this.hide();
this.active = false;
Event.stop(event);
return;
case Event.KEY_LEFT:
case Event.KEY_RIGHT:
return;
case Event.KEY_UP:
this.markPrevious();
this.render();
Event.stop(event);
return;
case Event.KEY_DOWN:
this.markNext();
this.render();
Event.stop(event);
return;
}
else
if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN ||
(Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return;
this.changed = true;
this.hasFocus = true;
if(this.observer) clearTimeout(this.observer);
this.observer =
setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000);
},activate: function() {
this.changed = false;
this.hasFocus = true;
this.getUpdatedChoices();
},onHover: function(event) {
var element = Event.findElement(event,'LI');
if(this.index != element.autocompleteIndex)
{
this.index = element.autocompleteIndex;
this.render();
}
Event.stop(event);
},onClick: function(event) {
var element = Event.findElement(event,'LI');
this.index = element.autocompleteIndex;
this.selectEntry();
this.hide();
},onBlur: function(event) {
// needed to make click events working
setTimeout(this.hide.bind(this),250);
this.hasFocus = false;
this.active = false;
},render: function() {
if(this.entryCount > 0) {
for (var i = 0; i < this.entryCount; i++)
this.index==i ?
Element.addClassName(this.getEntry(i),"selected") :
Element.removeClassName(this.getEntry(i),"selected");
if(this.hasFocus) {
this.show();
this.active = true;
}
} else {
this.active = false;
this.hide();
}
},markPrevious: function() {
if(this.index > 0) this.index--;
else this.index = this.entryCount-1;
this.getEntry(this.index).scrollIntoView(true);
},markNext: function() {
if(this.index < this.entryCount-1) this.index++;
else this.index = 0;
this.getEntry(this.index).scrollIntoView(false);
},getEntry: function(index) {
return this.update.firstChild.childNodes[index];
},getCurrentEntry: function() {
return this.getEntry(this.index);
},selectEntry: function() {
this.active = false;
this.updateElement(this.getCurrentEntry());
},updateElement: function(selectedElement) {
if (this.options.updateElement) {
this.options.updateElement(selectedElement);
return;
}
var value = '';
if (this.options.select) {
var nodes = $(selectedElement).select('.' + this.options.select) || [];
if(nodes.length>0) value = Element.collectTextNodes(nodes[0],this.options.select);
} else
value = Element.collectTextNodesIgnoreClass(selectedElement,'informal');
var bounds = this.getTokenBounds();
if (bounds[0] != -1) {
var newValue = this.element.value.substr(0,bounds[0]);
var whitespace = this.element.value.substr(bounds[0]).match(/^\s+/);
if (whitespace)
newValue += whitespace[0];
this.element.value = newValue + value + this.element.value.substr(bounds[1]);
} else {
this.element.value = value;
}
this.oldElementValue = this.element.value;
this.element.focus();
if (this.options.afterUpdateElement)
this.options.afterUpdateElement(this.element,selectedElement);
},updateChoices: function(choices) {
if(!this.changed && this.hasFocus) {
this.update.innerHTML = choices;
Element.cleanWhitespace(this.update);
Element.cleanWhitespace(this.update.down());
if(this.update.firstChild && this.update.down().childNodes) {
this.entryCount =
this.update.down().childNodes.length;
for (var i = 0; i < this.entryCount; i++) {
var entry = this.getEntry(i);
entry.autocompleteIndex = i;
this.addObservers(entry);
}
} else {
this.entryCount = 0;
}
this.stopIndicator();
this.index = 0;
if(this.entryCount==1 && this.options.autoSelect) {
this.selectEntry();
this.hide();
} else {
this.render();
}
}
},addObservers: function(element) {
Event.observe(element,"mouseover",this.onHover.bindAsEventListener(this));
Event.observe(element,"click",this.onClick.bindAsEventListener(this));
},onObserverEvent: function() {
this.changed = false;
this.tokenBounds = null;
if(this.getToken().length>=this.options.minChars) {
this.getUpdatedChoices();
} else {
this.active = false;
this.hide();
}
this.oldElementValue = this.element.value;
},getToken: function() {
var bounds = this.getTokenBounds();
return this.element.value.substring(bounds[0],bounds[1]).strip();
},getTokenBounds: function() {
if (null != this.tokenBounds) return this.tokenBounds;
var value = this.element.value;
if (value.strip().empty()) return [-1,0];
var diff = arguments.callee.getFirstDifferencePos(value,this.oldElementValue);
var offset = (diff == this.oldElementValue.length ? 1 : 0);
var prevTokenPos = -1,nextTokenPos = value.length;
var tp;
for (var index = 0,l = this.options.tokens.length; index < l; ++index) {
tp = value.lastIndexOf(this.options.tokens[index],diff + offset - 1);
if (tp > prevTokenPos) prevTokenPos = tp;
tp = value.indexOf(this.options.tokens[index],diff + offset);
if (-1 != tp && tp < nextTokenPos) nextTokenPos = tp;
}
return (this.tokenBounds = [prevTokenPos + 1,nextTokenPos]);
}
});
Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS,oldS) {
var boundary = Math.min(newS.length,oldS.length);
for (var index = 0; index < boundary; ++index)
if (newS[index] != oldS[index])
return index;
return boundary;
};
Ajax.Autocompleter = Class.create(Autocompleter.Base,{
initialize: function(element,update,url,options) {
this.baseInitialize(element,update,options);
this.options.asynchronous  = true;
this.options.onComplete    = this.onComplete.bind(this);
this.options.defaultParams = this.options.parameters || null;
this.url                   = url;
},getUpdatedChoices: function() {
this.startIndicator();
var entry = encodeURIComponent(this.options.paramName) + '=' +
encodeURIComponent(this.getToken());
this.options.parameters = this.options.callback ?
this.options.callback(this.element,entry) : entry;
if(this.options.defaultParams)
this.options.parameters += '&' + this.options.defaultParams;
new Ajax.Request(this.url,this.options);
},onComplete: function(request) {
this.updateChoices(request.responseText);
}
});
// The local array autocompleter. Used when you'd prefer to
// inject an array of autocompletion options into the page,rather
// than sending out Ajax queries,which can be quite slow sometimes.
//
// The constructor takes four parameters. The first two are,as usual,// the id of the monitored textbox,and id of the autocompletion menu.
// The third is the array you want to autocomplete from,and the fourth
// is the options block.
//
// Extra local autocompletion options:
// - choices - How many autocompletion choices to offer
//
// - partialSearch - If false,the autocompleter will match entered
//                    text only at the beginning of strings in the
//                    autocomplete array. Defaults to true,which will
//                    match text at the beginning of any *word* in the
//                    strings in the autocomplete array. If you want to
//                    search anywhere in the string,additionally set
//                    the option fullSearch to true (default: off).
//
// - fullSsearch - Search anywhere in autocomplete array strings.
//
// - partialChars - How many characters to enter before triggering
//                   a partial match (unlike minChars,which defines
//                   how many characters are required to do any match
//                   at all). Defaults to 2.
//
// - ignoreCase - Whether to ignore case when autocompleting.
//                 Defaults to true.
//
// It's possible to pass in a custom function as the 'selector'
// option,if you prefer to write your own autocompletion logic.
// In that case,the other options above will not apply unless
// you support them.
Autocompleter.Local = Class.create(Autocompleter.Base,{
initialize: function(element,update,array,options) {
this.baseInitialize(element,update,options);
this.options.array = array;
},getUpdatedChoices: function() {
this.updateChoices(this.options.selector(this));
},setOptions: function(options) {
this.options = Object.extend({
choices: 10,partialSearch: true,partialChars: 2,ignoreCase: true,fullSearch: false,selector: function(instance) {
var ret       = []; // Beginning matches
var partial   = []; // Inside matches
var entry     = instance.getToken();
var count     = 0;
for (var i = 0; i < instance.options.array.length &&
ret.length < instance.options.choices ; i++) {
var elem = instance.options.array[i];
var foundPos = instance.options.ignoreCase ?
elem.toLowerCase().indexOf(entry.toLowerCase()) :
elem.indexOf(entry);
while (foundPos != -1) {
if (foundPos == 0 && elem.length != entry.length) {
ret.push("<li><strong>" + elem.substr(0,entry.length) + "</strong>" +
elem.substr(entry.length) + "</li>");
break;
} else if (entry.length >= instance.options.partialChars &&
instance.options.partialSearch && foundPos != -1) {
if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
partial.push("<li>" + elem.substr(0,foundPos) + "<strong>" +
elem.substr(foundPos,entry.length) + "</strong>" + elem.substr(
foundPos + entry.length) + "</li>");
break;
}
}
foundPos = instance.options.ignoreCase ?
elem.toLowerCase().indexOf(entry.toLowerCase(),foundPos + 1) :
elem.indexOf(entry,foundPos + 1);
}
}
if (partial.length)
ret = ret.concat(partial.slice(0,instance.options.choices - ret.length));
return "<ul>" + ret.join('') + "</ul>";
}
},options || { });
}
});
// AJAX in-place editor and collection editor
// Full rewrite by Christophe Porteneuve <tdd@tddsworld.com> (April 2007).
// Use this if you notice weird scrolling problems on some browsers,// the DOM might be a bit confused when this gets called so do this
// waits 1 ms (with setTimeout) until it does the activation
Field.scrollFreeActivate = function(field) {
setTimeout(function() {
Field.activate(field);
},1);
};
Ajax.InPlaceEditor = Class.create({
initialize: function(element,url,options) {
this.url = url;
this.element = element = $(element);
this.prepareOptions();
this._controls = { };
arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION LAYER!!!
Object.extend(this.options,options || { });
if (!this.options.formId && this.element.id) {
this.options.formId = this.element.id + '-inplaceeditor';
if ($(this.options.formId))
this.options.formId = '';
}
if (this.options.externalControl)
this.options.externalControl = $(this.options.externalControl);
if (!this.options.externalControl)
this.options.externalControlOnly = false;
this._originalBackground = this.element.getStyle('background-color') || 'transparent';
this.element.title = this.options.clickToEditText;
this._boundCancelHandler = this.handleFormCancellation.bind(this);
this._boundComplete = (this.options.onComplete || Prototype.emptyFunction).bind(this);
this._boundFailureHandler = this.handleAJAXFailure.bind(this);
this._boundSubmitHandler = this.handleFormSubmission.bind(this);
this._boundWrapperHandler = this.wrapUp.bind(this);
this.registerListeners();
},checkForEscapeOrReturn: function(e) {
if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return;
if (Event.KEY_ESC == e.keyCode)
this.handleFormCancellation(e);
else if (Event.KEY_RETURN == e.keyCode)
this.handleFormSubmission(e);
},createControl: function(mode,handler,extraClasses) {
var control = this.options[mode + 'Control'];
var text = this.options[mode + 'Text'];
if ('button' == control) {
var btn = document.createElement('input');
btn.type = 'submit';
btn.value = text;
btn.className = 'editor_' + mode + '_button';
if ('cancel' == mode)
btn.onclick = this._boundCancelHandler;
this._form.appendChild(btn);
this._controls[mode] = btn;
} else if ('link' == control) {
var link = document.createElement('a');
link.href = '#';
link.appendChild(document.createTextNode(text));
link.onclick = 'cancel' == mode ? this._boundCancelHandler : this._boundSubmitHandler;
link.className = 'editor_' + mode + '_link';
if (extraClasses)
link.className += ' ' + extraClasses;
this._form.appendChild(link);
this._controls[mode] = link;
}
},createEditField: function() {
var text = (this.options.loadTextURL ? this.options.loadingText : this.getText());
var fld;
if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) {
fld = document.createElement('input');
fld.type = 'text';
var size = this.options.size || this.options.cols || 0;
if (0 < size) fld.size = size;
} else {
fld = document.createElement('textarea');
fld.rows = (1 >= this.options.rows ? this.options.autoRows : this.options.rows);
fld.cols = this.options.cols || 40;
}
fld.name = this.options.paramName;
fld.value = text; // No HTML breaks conversion anymore
fld.className = 'editor_field';
if (this.options.submitOnBlur)
fld.onblur = this._boundSubmitHandler;
this._controls.editor = fld;
if (this.options.loadTextURL)
this.loadExternalText();
this._form.appendChild(this._controls.editor);
},createForm: function() {
var ipe = this;
function addText(mode,condition) {
var text = ipe.options['text' + mode + 'Controls'];
if (!text || condition === false) return;
ipe._form.appendChild(document.createTextNode(text));
};
this._form = $(document.createElement('form'));
this._form.id = this.options.formId;
this._form.addClassName(this.options.formClassName);
this._form.onsubmit = this._boundSubmitHandler;
this.createEditField();
if ('textarea' == this._controls.editor.tagName.toLowerCase())
this._form.appendChild(document.createElement('br'));
if (this.options.onFormCustomization)
this.options.onFormCustomization(this,this._form);
addText('Before',this.options.okControl || this.options.cancelControl);
this.createControl('ok',this._boundSubmitHandler);
addText('Between',this.options.okControl && this.options.cancelControl);
this.createControl('cancel',this._boundCancelHandler,'editor_cancel');
addText('After',this.options.okControl || this.options.cancelControl);
},destroy: function() {
if (this._oldInnerHTML)
this.element.innerHTML = this._oldInnerHTML;
this.leaveEditMode();
this.unregisterListeners();
},enterEditMode: function(e) {
if (this._saving || this._editing) return;
this._editing = true;
this.triggerCallback('onEnterEditMode');
if (this.options.externalControl)
this.options.externalControl.hide();
this.element.hide();
this.createForm();
this.element.parentNode.insertBefore(this._form,this.element);
if (!this.options.loadTextURL)
this.postProcessEditField();
if (e) Event.stop(e);
},enterHover: function(e) {
if (this.options.hoverClassName)
this.element.addClassName(this.options.hoverClassName);
if (this._saving) return;
this.triggerCallback('onEnterHover');
},getText: function() {
return this.element.innerHTML.unescapeHTML();
},handleAJAXFailure: function(transport) {
this.triggerCallback('onFailure',transport);
if (this._oldInnerHTML) {
this.element.innerHTML = this._oldInnerHTML;
this._oldInnerHTML = null;
}
},handleFormCancellation: function(e) {
this.wrapUp();
if (e) Event.stop(e);
},handleFormSubmission: function(e) {
var form = this._form;
var value = $F(this._controls.editor);
this.prepareSubmission();
var params = this.options.callback(form,value) || '';
if (Object.isString(params))
params = params.toQueryParams();
params.editorId = this.element.id;
if (this.options.htmlResponse) {
var options = Object.extend({ evalScripts: true },this.options.ajaxOptions);
Object.extend(options,{
parameters: params,onComplete: this._boundWrapperHandler,onFailure: this._boundFailureHandler
});
new Ajax.Updater({ success: this.element },this.url,options);
} else {
var options = Object.extend({ method: 'get' },this.options.ajaxOptions);
Object.extend(options,{
parameters: params,onComplete: this._boundWrapperHandler,onFailure: this._boundFailureHandler
});
new Ajax.Request(this.url,options);
}
if (e) Event.stop(e);
},leaveEditMode: function() {
this.element.removeClassName(this.options.savingClassName);
this.removeForm();
this.leaveHover();
this.element.style.backgroundColor = this._originalBackground;
this.element.show();
if (this.options.externalControl)
this.options.externalControl.show();
this._saving = false;
this._editing = false;
this._oldInnerHTML = null;
this.triggerCallback('onLeaveEditMode');
},leaveHover: function(e) {
if (this.options.hoverClassName)
this.element.removeClassName(this.options.hoverClassName);
if (this._saving) return;
this.triggerCallback('onLeaveHover');
},loadExternalText: function() {
this._form.addClassName(this.options.loadingClassName);
this._controls.editor.disabled = true;
var options = Object.extend({ method: 'get' },this.options.ajaxOptions);
Object.extend(options,{
parameters: 'editorId=' + encodeURIComponent(this.element.id),onComplete: Prototype.emptyFunction,onSuccess: function(transport) {
this._form.removeClassName(this.options.loadingClassName);
var text = transport.responseText;
if (this.options.stripLoadedTextTags)
text = text.stripTags();
this._controls.editor.value = text;
this._controls.editor.disabled = false;
this.postProcessEditField();
}.bind(this),onFailure: this._boundFailureHandler
});
new Ajax.Request(this.options.loadTextURL,options);
},postProcessEditField: function() {
var fpc = this.options.fieldPostCreation;
if (fpc)
$(this._controls.editor)['focus' == fpc ? 'focus' : 'activate']();
},prepareOptions: function() {
this.options = Object.clone(Ajax.InPlaceEditor.DefaultOptions);
Object.extend(this.options,Ajax.InPlaceEditor.DefaultCallbacks);
[this._extraDefaultOptions].flatten().compact().each(function(defs) {
Object.extend(this.options,defs);
}.bind(this));
},prepareSubmission: function() {
this._saving = true;
this.removeForm();
this.leaveHover();
this.showSaving();
},registerListeners: function() {
this._listeners = { };
var listener;
$H(Ajax.InPlaceEditor.Listeners).each(function(pair) {
listener = this[pair.value].bind(this);
this._listeners[pair.key] = listener;
if (!this.options.externalControlOnly)
this.element.observe(pair.key,listener);
if (this.options.externalControl)
this.options.externalControl.observe(pair.key,listener);
}.bind(this));
},removeForm: function() {
if (!this._form) return;
this._form.remove();
this._form = null;
this._controls = { };
},showSaving: function() {
this._oldInnerHTML = this.element.innerHTML;
this.element.innerHTML = this.options.savingText;
this.element.addClassName(this.options.savingClassName);
this.element.style.backgroundColor = this._originalBackground;
this.element.show();
},triggerCallback: function(cbName,arg) {
if ('function' == typeof this.options[cbName]) {
this.options[cbName](this,arg);
}
},unregisterListeners: function() {
$H(this._listeners).each(function(pair) {
if (!this.options.externalControlOnly)
this.element.stopObserving(pair.key,pair.value);
if (this.options.externalControl)
this.options.externalControl.stopObserving(pair.key,pair.value);
}.bind(this));
},wrapUp: function(transport) {
this.leaveEditMode();
// Can't use triggerCallback due to backward compatibility: requires
// binding + direct element
this._boundComplete(transport,this.element);
}
});
Object.extend(Ajax.InPlaceEditor.prototype,{
dispose: Ajax.InPlaceEditor.prototype.destroy
});
Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor,{
initialize: function($super,element,url,options) {
this._extraDefaultOptions = Ajax.InPlaceCollectionEditor.DefaultOptions;
$super(element,url,options);
},createEditField: function() {
var list = document.createElement('select');
list.name = this.options.paramName;
list.size = 1;
this._controls.editor = list;
this._collection = this.options.collection || [];
if (this.options.loadCollectionURL)
this.loadCollection();
else
this.checkForExternalText();
this._form.appendChild(this._controls.editor);
},loadCollection: function() {
this._form.addClassName(this.options.loadingClassName);
this.showLoadingText(this.options.loadingCollectionText);
var options = Object.extend({ method: 'get' },this.options.ajaxOptions);
Object.extend(options,{
parameters: 'editorId=' + encodeURIComponent(this.element.id),onComplete: Prototype.emptyFunction,onSuccess: function(transport) {
var js = transport.responseText.strip();
if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check
throw('Server returned an invalid collection representation.');
this._collection = eval(js);
this.checkForExternalText();
}.bind(this),onFailure: this.onFailure
});
new Ajax.Request(this.options.loadCollectionURL,options);
},showLoadingText: function(text) {
this._controls.editor.disabled = true;
var tempOption = this._controls.editor.firstChild;
if (!tempOption) {
tempOption = document.createElement('option');
tempOption.value = '';
this._controls.editor.appendChild(tempOption);
tempOption.selected = true;
}
tempOption.update((text || '').stripScripts().stripTags());
},checkForExternalText: function() {
this._text = this.getText();
if (this.options.loadTextURL)
this.loadExternalText();
else
this.buildOptionList();
},loadExternalText: function() {
this.showLoadingText(this.options.loadingText);
var options = Object.extend({ method: 'get' },this.options.ajaxOptions);
Object.extend(options,{
parameters: 'editorId=' + encodeURIComponent(this.element.id),onComplete: Prototype.emptyFunction,onSuccess: function(transport) {
this._text = transport.responseText.strip();
this.buildOptionList();
}.bind(this),onFailure: this.onFailure
});
new Ajax.Request(this.options.loadTextURL,options);
},buildOptionList: function() {
this._form.removeClassName(this.options.loadingClassName);
this._collection = this._collection.map(function(entry) {
return 2 === entry.length ? entry : [entry,entry].flatten();
});
var marker = ('value' in this.options) ? this.options.value : this._text;
var textFound = this._collection.any(function(entry) {
return entry[0] == marker;
}.bind(this));
this._controls.editor.update('');
var option;
this._collection.each(function(entry,index) {
option = document.createElement('option');
option.value = entry[0];
option.selected = textFound ? entry[0] == marker : 0 == index;
option.appendChild(document.createTextNode(entry[1]));
this._controls.editor.appendChild(option);
}.bind(this));
this._controls.editor.disabled = false;
Field.scrollFreeActivate(this._controls.editor);
}
});
//**** DEPRECATION LAYER FOR InPlace[Collection]Editor! ****
//**** This only  exists for a while,in order to  let ****
//**** users adapt to  the new API.  Read up on the new ****
//**** API and convert your code to it ASAP!            ****
Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) {
if (!options) return;
function fallback(name,expr) {
if (name in options || expr === undefined) return;
options[name] = expr;
};
fallback('cancelControl',(options.cancelLink ? 'link' : (options.cancelButton ? 'button' :
options.cancelLink == options.cancelButton == false ? false : undefined)));
fallback('okControl',(options.okLink ? 'link' : (options.okButton ? 'button' :
options.okLink == options.okButton == false ? false : undefined)));
fallback('highlightColor',options.highlightcolor);
fallback('highlightEndColor',options.highlightendcolor);
};
Object.extend(Ajax.InPlaceEditor,{
DefaultOptions: {
ajaxOptions: { },autoRows: 3,// Use when multi-line w/ rows == 1
cancelControl: 'link',// 'link'|'button'|false
cancelText: 'cancel',clickToEditText: 'Click to edit',externalControl: null,// id|elt
externalControlOnly: false,fieldPostCreation: 'activate',// 'activate'|'focus'|false
formClassName: 'inplaceeditor-form',formId: null,// id|elt
highlightColor: '#ffff99',highlightEndColor: '#ffffff',hoverClassName: '',htmlResponse: true,loadingClassName: 'inplaceeditor-loading',loadingText: 'Loading...',okControl: 'button',// 'link'|'button'|false
okText: 'ok',paramName: 'value',rows: 1,// If 1 and multi-line,uses autoRows
savingClassName: 'inplaceeditor-saving',savingText: 'Saving...',size: 0,stripLoadedTextTags: false,submitOnBlur: false,textAfterControls: '',textBeforeControls: '',textBetweenControls: ''
},DefaultCallbacks: {
callback: function(form) {
return Form.serialize(form);
},onComplete: function(transport,element) {
// For backward compatibility,this one is bound to the IPE,and passes
// the element directly.  It was too often customized,so we don't break it.
new Effect.Highlight(element,{
startcolor: this.options.highlightColor,keepBackgroundImage: true });
},onEnterEditMode: null,onEnterHover: function(ipe) {
ipe.element.style.backgroundColor = ipe.options.highlightColor;
if (ipe._effect)
ipe._effect.cancel();
},onFailure: function(transport,ipe) {
alert('Error communication with the server: ' + transport.responseText.stripTags());
},onFormCustomization: null,// Takes the IPE and its generated form,after editor,before controls.
onLeaveEditMode: null,onLeaveHover: function(ipe) {
ipe._effect = new Effect.Highlight(ipe.element,{
startcolor: ipe.options.highlightColor,endcolor: ipe.options.highlightEndColor,restorecolor: ipe._originalBackground,keepBackgroundImage: true
});
}
},Listeners: {
click: 'enterEditMode',keydown: 'checkForEscapeOrReturn',mouseover: 'enterHover',mouseout: 'leaveHover'
}
});
Ajax.InPlaceCollectionEditor.DefaultOptions = {
loadingCollectionText: 'Loading options...'
};
// Delayed observer,like Form.Element.Observer,// but waits for delay after last key input
// Ideal for live-search fields
Form.Element.DelayedObserver = Class.create({
initialize: function(element,delay,callback) {
this.delay     = delay || 0.5;
this.element   = $(element);
this.callback  = callback;
this.timer     = null;
this.lastValue = $F(this.element);
Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));
},delayedListener: function(event) {
if(this.lastValue == $F(this.element)) return;
if(this.timer) clearTimeout(this.timer);
this.timer = setTimeout(this.onTimerEvent.bind(this),this.delay * 1000);
this.lastValue = $F(this.element);
},onTimerEvent: function() {
this.timer = null;
this.callback(this.element,$F(this.element));
}
});
// Copyright (c) 2005-2009 Marty Haught,Thomas Fuchs
//
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details,see the script.aculo.us web site: http://script.aculo.us/
if (!Control) var Control = { };
// options:
//  axis: 'vertical',or 'horizontal' (default)
//
// callbacks:
//  onChange(value)
//  onSlide(value)
Control.Slider = Class.create({
initialize: function(handle,track,options) {
var slider = this;
if (Object.isArray(handle)) {
this.handles = handle.collect( function(e) { return $(e) });
} else {
this.handles = [$(handle)];
}
this.track   = $(track);
this.options = options || { };
this.axis      = this.options.axis || 'horizontal';
this.increment = this.options.increment || 1;
this.step      = parseInt(this.options.step || '1');
this.range     = this.options.range || $R(0,1);
this.value     = 0; // assure backwards compat
this.values    = this.handles.map( function() { return 0 });
this.spans     = this.options.spans ? this.options.spans.map(function(s){ return $(s) }) : false;
this.options.startSpan = $(this.options.startSpan || null);
this.options.endSpan   = $(this.options.endSpan || null);
this.restricted = this.options.restricted || false;
this.maximum   = this.options.maximum || this.range.end;
this.minimum   = this.options.minimum || this.range.start;
// Will be used to align the handle onto the track,if necessary
this.alignX = parseInt(this.options.alignX || '0');
this.alignY = parseInt(this.options.alignY || '0');
this.trackLength = this.maximumOffset() - this.minimumOffset();
this.handleLength = this.isVertical() ?
(this.handles[0].offsetHeight != 0 ?
this.handles[0].offsetHeight : this.handles[0].style.height.replace(/px$/,"")) :
(this.handles[0].offsetWidth != 0 ? this.handles[0].offsetWidth :
this.handles[0].style.width.replace(/px$/,""));
this.active   = false;
this.dragging = false;
this.disabled = false;
if (this.options.disabled) this.setDisabled();
// Allowed values array
this.allowedValues = this.options.values ? this.options.values.sortBy(Prototype.K) : false;
if (this.allowedValues) {
this.minimum = this.allowedValues.min();
this.maximum = this.allowedValues.max();
}
this.eventMouseDown = this.startDrag.bindAsEventListener(this);
this.eventMouseUp   = this.endDrag.bindAsEventListener(this);
this.eventMouseMove = this.update.bindAsEventListener(this);
// Initialize handles in reverse (make sure first handle is active)
this.handles.each( function(h,i) {
i = slider.handles.length-1-i;
slider.setValue(parseFloat(
(Object.isArray(slider.options.sliderValue) ?
slider.options.sliderValue[i] : slider.options.sliderValue) ||
slider.range.start),i);
h.makePositioned().observe("mousedown",slider.eventMouseDown);
});
this.track.observe("mousedown",this.eventMouseDown);
document.observe("mouseup",this.eventMouseUp);
document.observe("mousemove",this.eventMouseMove);
this.initialized = true;
},dispose: function() {
var slider = this;
Event.stopObserving(this.track,"mousedown",this.eventMouseDown);
Event.stopObserving(document,"mouseup",this.eventMouseUp);
Event.stopObserving(document,"mousemove",this.eventMouseMove);
this.handles.each( function(h) {
Event.stopObserving(h,"mousedown",slider.eventMouseDown);
});
},setDisabled: function(){
this.disabled = true;
},setEnabled: function(){
this.disabled = false;
},getNearestValue: function(value){
if (this.allowedValues){
if (value >= this.allowedValues.max()) return(this.allowedValues.max());
if (value <= this.allowedValues.min()) return(this.allowedValues.min());
var offset = Math.abs(this.allowedValues[0] - value);
var newValue = this.allowedValues[0];
this.allowedValues.each( function(v) {
var currentOffset = Math.abs(v - value);
if (currentOffset <= offset){
newValue = v;
offset = currentOffset;
}
});
return newValue;
}
if (value > this.range.end) return this.range.end;
if (value < this.range.start) return this.range.start;
return value;
},setValue: function(sliderValue,handleIdx){
if (!this.active) {
this.activeHandleIdx = handleIdx || 0;
this.activeHandle    = this.handles[this.activeHandleIdx];
this.updateStyles();
}
handleIdx = handleIdx || this.activeHandleIdx || 0;
if (this.initialized && this.restricted) {
if ((handleIdx>0) && (sliderValue<this.values[handleIdx-1]))
sliderValue = this.values[handleIdx-1];
if ((handleIdx < (this.handles.length-1)) && (sliderValue>this.values[handleIdx+1]))
sliderValue = this.values[handleIdx+1];
}
sliderValue = this.getNearestValue(sliderValue);
this.values[handleIdx] = sliderValue;
this.value = this.values[0]; // assure backwards compat
this.handles[handleIdx].style[this.isVertical() ? 'top' : 'left'] =
this.translateToPx(sliderValue);
this.drawSpans();
if (!this.dragging || !this.event) this.updateFinished();
},setValueBy: function(delta,handleIdx) {
this.setValue(this.values[handleIdx || this.activeHandleIdx || 0] + delta,handleIdx || this.activeHandleIdx || 0);
},translateToPx: function(value) {
return Math.round(
((this.trackLength-this.handleLength)/(this.range.end-this.range.start)) *
(value - this.range.start)) + "px";
},translateToValue: function(offset) {
return ((offset/(this.trackLength-this.handleLength) *
(this.range.end-this.range.start)) + this.range.start);
},getRange: function(range) {
var v = this.values.sortBy(Prototype.K);
range = range || 0;
return $R(v[range],v[range+1]);
},minimumOffset: function(){
return(this.isVertical() ? this.alignY : this.alignX);
},maximumOffset: function(){
return(this.isVertical() ?
(this.track.offsetHeight != 0 ? this.track.offsetHeight :
this.track.style.height.replace(/px$/,"")) - this.alignY :
(this.track.offsetWidth != 0 ? this.track.offsetWidth :
this.track.style.width.replace(/px$/,"")) - this.alignX);
},isVertical:  function(){
return (this.axis == 'vertical');
},drawSpans: function() {
var slider = this;
if (this.spans)
$R(0,this.spans.length-1).each(function(r) { slider.setSpan(slider.spans[r],slider.getRange(r)) });
if (this.options.startSpan)
this.setSpan(this.options.startSpan,$R(0,this.values.length>1 ? this.getRange(0).min() : this.value ));
if (this.options.endSpan)
this.setSpan(this.options.endSpan,$R(this.values.length>1 ? this.getRange(this.spans.length-1).max() : this.value,this.maximum));
},setSpan: function(span,range) {
if (this.isVertical()) {
span.style.top = this.translateToPx(range.start);
span.style.height = this.translateToPx(range.end - range.start + this.range.start);
} else {
span.style.left = this.translateToPx(range.start);
span.style.width = this.translateToPx(range.end - range.start + this.range.start);
}
},updateStyles: function() {
this.handles.each( function(h){ Element.removeClassName(h,'selected') });
Element.addClassName(this.activeHandle,'selected');
},startDrag: function(event) {
if (Event.isLeftClick(event)) {
if (!this.disabled){
this.active = true;
var handle = Event.element(event);
var pointer  = [Event.pointerX(event),Event.pointerY(event)];
var track = handle;
if (track==this.track) {
var offsets  = this.track.cumulativeOffset();
this.event = event;
this.setValue(this.translateToValue(
(this.isVertical() ? pointer[1]-offsets[1] : pointer[0]-offsets[0])-(this.handleLength/2)
));
var offsets  = this.activeHandle.cumulativeOffset();
this.offsetX = (pointer[0] - offsets[0]);
this.offsetY = (pointer[1] - offsets[1]);
} else {
// find the handle (prevents issues with Safari)
while((this.handles.indexOf(handle) == -1) && handle.parentNode)
handle = handle.parentNode;
if (this.handles.indexOf(handle)!=-1) {
this.activeHandle    = handle;
this.activeHandleIdx = this.handles.indexOf(this.activeHandle);
this.updateStyles();
var offsets  = this.activeHandle.cumulativeOffset();
this.offsetX = (pointer[0] - offsets[0]);
this.offsetY = (pointer[1] - offsets[1]);
}
}
}
Event.stop(event);
}
},update: function(event) {
if (this.active) {
if (!this.dragging) this.dragging = true;
this.draw(event);
if (Prototype.Browser.WebKit) window.scrollBy(0,0);
Event.stop(event);
}
},draw: function(event) {
var pointer = [Event.pointerX(event),Event.pointerY(event)];
var offsets = this.track.cumulativeOffset();
pointer[0] -= this.offsetX + offsets[0];
pointer[1] -= this.offsetY + offsets[1];
this.event = event;
this.setValue(this.translateToValue( this.isVertical() ? pointer[1] : pointer[0] ));
if (this.initialized && this.options.onSlide)
this.options.onSlide(this.values.length>1 ? this.values : this.value,this);
},endDrag: function(event) {
if (this.active && this.dragging) {
this.finishDrag(event,true);
Event.stop(event);
}
this.active = false;
this.dragging = false;
},finishDrag: function(event,success) {
this.active = false;
this.dragging = false;
this.updateFinished();
},updateFinished: function() {
if (this.initialized && this.options.onChange)
this.options.onChange(this.values.length>1 ? this.values : this.value,this);
this.event = null;
}
});
// ---------------------------------------------------------------------------
// Javascript:ShadowBox
// ---------------------------------------------------------------------------
/*
* Shadowbox.js,version 3.0.3
* http://shadowbox-js.com/
*
* Copyright 2007-2010,Michael J. I. Jackson
* Date: 2010-04-21 09:28:06 +0000
*/
(function(window,undefined){var S={version:"3.0.3"};var ua=navigator.userAgent.toLowerCase();if(ua.indexOf("windows")>-1||ua.indexOf("win32")>-1){S.isWindows=true}else{if(ua.indexOf("macintosh")>-1||ua.indexOf("mac os x")>-1){S.isMac=true}else{if(ua.indexOf("linux")>-1){S.isLinux=true}}}S.isIE=ua.indexOf("msie")>-1;S.isIE6=ua.indexOf("msie 6")>-1;S.isIE7=ua.indexOf("msie 7")>-1;S.isGecko=ua.indexOf("gecko")>-1&&ua.indexOf("safari")==-1;S.isWebKit=ua.indexOf("applewebkit/")>-1;var inlineId=/#(.+)$/,galleryName=/^(light|shadow)box\[(.*?)\]/i,inlineParam=/\s*([a-z_]*?)\s*=\s*(.+)\s*/,fileExtension=/[0-9a-z]+$/i,scriptPath=/(.+\/)shadowbox\.js/i;var open=false,initialized=false,lastOptions={},slideDelay=0,slideStart,slideTimer;S.current=-1;S.dimensions=null;S.ease=function(state){return 1+Math.pow(state-1,3)};S.errorInfo={fla:{name:"Flash",url:"http://www.adobe.com/products/flashplayer/"},qt:{name:"QuickTime",url:"http://www.apple.com/quicktime/download/"},wmp:{name:"Windows Media Player",url:"http://www.microsoft.com/windows/windowsmedia/"},f4m:{name:"Flip4Mac",url:"http://www.flip4mac.com/wmv_download.htm"}};S.gallery=[];S.onReady=noop;S.path=null;S.player=null;S.playerId="sb-player";S.options={animate:true,animateFade:true,autoplayMovies:true,continuous:false,enableKeys:true,flashParams:{bgcolor:"#000000",allowfullscreen:true},flashVars:{},flashVersion:"9.0.115",handleOversize:"resize",handleUnsupported:"link",onChange:noop,onClose:noop,onFinish:noop,onOpen:noop,showMovieControls:true,skipSetup:false,slideshowDelay:0,viewportPadding:20};S.getCurrent=function(){return S.current>-1?S.gallery[S.current]:null};S.hasNext=function(){return S.gallery.length>1&&(S.current!=S.gallery.length-1||S.options.continuous)};S.isOpen=function(){return open};S.isPaused=function(){return slideTimer=="pause"};S.applyOptions=function(options){lastOptions=apply({},S.options);apply(S.options,options)};S.revertOptions=function(){apply(S.options,lastOptions)};S.init=function(options,callback){if(initialized){return}initialized=true;if(S.skin.options){apply(S.options,S.skin.options)}if(options){apply(S.options,options)}if(!S.path){var path,scripts=document.getElementsByTagName("script");for(var i=0,len=scripts.length;i<len;++i){path=scriptPath.exec(scripts[i].src);if(path){S.path=path[1];break}}}if(callback){S.onReady=callback}bindLoad()};S.open=function(obj){if(open){return}var gc=S.makeGallery(obj);S.gallery=gc[0];S.current=gc[1];obj=S.getCurrent();if(obj==null){return}S.applyOptions(obj.options||{});filterGallery();if(S.gallery.length){obj=S.getCurrent();if(S.options.onOpen(obj)===false){return}open=true;S.skin.onOpen(obj,load)}};S.close=function(){if(!open){return}open=false;if(S.player){S.player.remove();S.player=null}if(typeof slideTimer=="number"){clearTimeout(slideTimer);slideTimer=null}slideDelay=0;listenKeys(false);S.options.onClose(S.getCurrent());S.skin.onClose();S.revertOptions()};S.play=function(){if(!S.hasNext()){return}if(!slideDelay){slideDelay=S.options.slideshowDelay*1000}if(slideDelay){slideStart=now();slideTimer=setTimeout(function(){slideDelay=slideStart=0;S.next()},slideDelay);if(S.skin.onPlay){S.skin.onPlay()}}};S.pause=function(){if(typeof slideTimer!="number"){return}slideDelay=Math.max(0,slideDelay-(now()-slideStart));if(slideDelay){clearTimeout(slideTimer);slideTimer="pause";if(S.skin.onPause){S.skin.onPause()}}};S.change=function(index){if(!(index in S.gallery)){if(S.options.continuous){index=(index<0?S.gallery.length+index:0);if(!(index in S.gallery)){return}}else{return}}S.current=index;if(typeof slideTimer=="number"){clearTimeout(slideTimer);slideTimer=null;slideDelay=slideStart=0}S.options.onChange(S.getCurrent());load(true)};S.next=function(){S.change(S.current+1)};S.previous=function(){S.change(S.current-1)};S.setDimensions=function(height,width,maxHeight,maxWidth,topBottom,leftRight,padding,preserveAspect){var originalHeight=height,originalWidth=width;var extraHeight=2*padding+topBottom;if(height+extraHeight>maxHeight){height=maxHeight-extraHeight}var extraWidth=2*padding+leftRight;if(width+extraWidth>maxWidth){width=maxWidth-extraWidth}var changeHeight=(originalHeight-height)/originalHeight,changeWidth=(originalWidth-width)/originalWidth,oversized=(changeHeight>0||changeWidth>0);if(preserveAspect&&oversized){if(changeHeight>changeWidth){width=Math.round((originalWidth/originalHeight)*height)}else{if(changeWidth>changeHeight){height=Math.round((originalHeight/originalWidth)*width)}}}S.dimensions={height:height+topBottom,width:width+leftRight,innerHeight:height,innerWidth:width,top:Math.floor((maxHeight-(height+extraHeight))/2+padding),left:Math.floor((maxWidth-(width+extraWidth))/2+padding),oversized:oversized};return S.dimensions};S.makeGallery=function(obj){var gallery=[],current=-1;if(typeof obj=="string"){obj=[obj]}if(typeof obj.length=="number"){each(obj,function(i,o){if(o.content){gallery[i]=o}else{gallery[i]={content:o}}});current=0}else{if(obj.tagName){var cacheObj=S.getCache(obj);obj=cacheObj?cacheObj:S.makeObject(obj)}if(obj.gallery){gallery=[];var o;for(var key in S.cache){o=S.cache[key];if(o.gallery&&o.gallery==obj.gallery){if(current==-1&&o.content==obj.content){current=gallery.length}gallery.push(o)}}if(current==-1){gallery.unshift(obj);current=0}}else{gallery=[obj];current=0}}each(gallery,function(i,o){gallery[i]=apply({},o)});return[gallery,current]};S.makeObject=function(link,options){var obj={content:link.href,title:link.getAttribute("title")||"",link:link};if(options){options=apply({},options);each(["player","title","height","width","gallery"],function(i,o){if(typeof options[o]!="undefined"){obj[o]=options[o];delete options[o]}});obj.options=options}else{obj.options={}}if(!obj.player){obj.player=S.getPlayer(obj.content)}var rel=link.getAttribute("rel");if(rel){var match=rel.match(galleryName);if(match){obj.gallery=escape(match[2])}each(rel.split(";"),function(i,p){match=p.match(inlineParam);if(match){obj[match[1]]=match[2]}})}return obj};S.getPlayer=function(content){if(content.indexOf("#")>-1&&content.indexOf(document.location.href)==0){return"inline"}var q=content.indexOf("?");if(q>-1){content=content.substring(0,q)}var ext,m=content.match(fileExtension);if(m){ext=m[0].toLowerCase()}if(ext){if(S.img&&S.img.ext.indexOf(ext)>-1){return"img"}if(S.swf&&S.swf.ext.indexOf(ext)>-1){return"swf"}if(S.flv&&S.flv.ext.indexOf(ext)>-1){return"flv"}if(S.qt&&S.qt.ext.indexOf(ext)>-1){if(S.wmp&&S.wmp.ext.indexOf(ext)>-1){return"qtwmp"}else{return"qt"}}if(S.wmp&&S.wmp.ext.indexOf(ext)>-1){return"wmp"}}return"iframe"};function filterGallery(){var err=S.errorInfo,plugins=S.plugins,obj,remove,needed,m,format,replace,inlineEl,flashVersion;for(var i=0;i<S.gallery.length;++i){obj=S.gallery[i];remove=false;needed=null;switch(obj.player){case"flv":case"swf":if(!plugins.fla){needed="fla"}break;case"qt":if(!plugins.qt){needed="qt"}break;case"wmp":if(S.isMac){if(plugins.qt&&plugins.f4m){obj.player="qt"}else{needed="qtf4m"}}else{if(!plugins.wmp){needed="wmp"}}break;case"qtwmp":if(plugins.qt){obj.player="qt"}else{if(plugins.wmp){obj.player="wmp"}else{needed="qtwmp"}}break}if(needed){if(S.options.handleUnsupported=="link"){switch(needed){case"qtf4m":format="shared";replace=[err.qt.url,err.qt.name,err.f4m.url,err.f4m.name];break;case"qtwmp":format="either";replace=[err.qt.url,err.qt.name,err.wmp.url,err.wmp.name];break;default:format="single";replace=[err[needed].url,err[needed].name]}obj.player="html";obj.content='<div class="sb-message">'+sprintf(S.lang.errors[format],replace)+"</div>"}else{remove=true}}else{if(obj.player=="inline"){m=inlineId.exec(obj.content);if(m){inlineEl=get(m[1]);if(inlineEl){obj.content=inlineEl.innerHTML}else{remove=true}}else{remove=true}}else{if(obj.player=="swf"||obj.player=="flv"){flashVersion=(obj.options&&obj.options.flashVersion)||S.options.flashVersion;if(S.flash&&!S.flash.hasFlashPlayerVersion(flashVersion)){obj.width=310;obj.height=177}}}}if(remove){S.gallery.splice(i,1);if(i<S.current){--S.current}else{if(i==S.current){S.current=i>0?i-1:i}}--i}}}function listenKeys(on){if(!S.options.enableKeys){return}(on?addEvent:removeEvent)(document,"keydown",handleKey)}function handleKey(e){if(e.metaKey||e.shiftKey||e.altKey||e.ctrlKey){return}var code=keyCode(e),handler;switch(code){case 81:case 88:case 27:handler=S.close;break;case 37:handler=S.previous;break;case 39:handler=S.next;break;case 32:handler=typeof slideTimer=="number"?S.pause:S.play;break}if(handler){preventDefault(e);handler()}}function load(changing){listenKeys(false);var obj=S.getCurrent();var player=(obj.player=="inline"?"html":obj.player);if(typeof S[player]!="function"){throw"unknown player "+player}if(changing){S.player.remove();S.revertOptions();S.applyOptions(obj.options||{})}S.player=new S[player](obj,S.playerId);if(S.gallery.length>1){var next=S.gallery[S.current+1]||S.gallery[0];if(next.player=="img"){var a=new Image();a.src=next.content}var prev=S.gallery[S.current-1]||S.gallery[S.gallery.length-1];if(prev.player=="img"){var b=new Image();b.src=prev.content}}S.skin.onLoad(changing,waitReady)}function waitReady(){if(!open){return}if(typeof S.player.ready!="undefined"){var timer=setInterval(function(){if(open){if(S.player.ready){clearInterval(timer);timer=null;S.skin.onReady(show)}}else{clearInterval(timer);timer=null}},10)}else{S.skin.onReady(show)}}function show(){if(!open){return}S.player.append(S.skin.body,S.dimensions);S.skin.onShow(finish)}function finish(){if(!open){return}if(S.player.onLoad){S.player.onLoad()}S.options.onFinish(S.getCurrent());if(!S.isPaused()){S.play()}listenKeys(true)}if(!Array.prototype.indexOf){Array.prototype.indexOf=function(obj,from){var len=this.length>>>0;from=from||0;if(from<0){from+=len}for(;from<len;++from){if(from in this&&this[from]===obj){return from}}return -1}}function now(){return(new Date).getTime()}function apply(original,extension){for(var property in extension){original[property]=extension[property]}return original}function each(obj,callback){var i=0,len=obj.length;for(var value=obj[0];i<len&&callback.call(value,i,value)!==false;value=obj[++i]){}}function sprintf(str,replace){return str.replace(/\{(\w+?)\}/g,function(match,i){return replace[i]})}function noop(){}function get(id){return document.getElementById(id)}function remove(el){el.parentNode.removeChild(el)}var supportsOpacity=true,supportsFixed=true;function checkSupport(){var body=document.body,div=document.createElement("div");supportsOpacity=typeof div.style.opacity==="string";div.style.position="fixed";div.style.margin=0;div.style.top="20px";body.appendChild(div,body.firstChild);supportsFixed=div.offsetTop==20;body.removeChild(div)}S.getStyle=(function(){var opacity=/opacity=([^)]*)/,getComputedStyle=document.defaultView&&document.defaultView.getComputedStyle;return function(el,style){var ret;if(!supportsOpacity&&style=="opacity"&&el.currentStyle){ret=opacity.test(el.currentStyle.filter||"")?(parseFloat(RegExp.$1)/100)+"":"";return ret===""?"1":ret}if(getComputedStyle){var computedStyle=getComputedStyle(el,null);if(computedStyle){ret=computedStyle[style]}if(style=="opacity"&&ret==""){ret="1"}}else{ret=el.currentStyle[style]}return ret}})();S.appendHTML=function(el,html){if(el.insertAdjacentHTML){el.insertAdjacentHTML("BeforeEnd",html)}else{if(el.lastChild){var range=el.ownerDocument.createRange();range.setStartAfter(el.lastChild);var frag=range.createContextualFragment(html);el.appendChild(frag)}else{el.innerHTML=html}}};S.getWindowSize=function(dimension){if(document.compatMode==="CSS1Compat"){return document.documentElement["client"+dimension]}return document.body["client"+dimension]};S.setOpacity=function(el,opacity){var style=el.style;if(supportsOpacity){style.opacity=(opacity==1?"":opacity)}else{style.zoom=1;if(opacity==1){if(typeof style.filter=="string"&&(/alpha/i).test(style.filter)){style.filter=style.filter.replace(/\s*[\w\.]*alpha\([^\)]*\);?/gi,"")}}else{style.filter=(style.filter||"").replace(/\s*[\w\.]*alpha\([^\)]*\)/gi,"")+" alpha(opacity="+(opacity*100)+")"}}};S.clearOpacity=function(el){S.setOpacity(el,1)};var E=Event;function getTarget(e){return E.element(e)}function getPageXY(e){return[E.pointerX(e),E.pointerY(e)]}function preventDefault(e){E.stop(e)}function keyCode(e){return e.keyCode}function addEvent(el,type,handler){E.observe(el,type,handler)}function removeEvent(el,type,handler){E.stopObserving(el,type,handler)}var loaded=false,DOMContentLoaded;if(document.addEventListener){DOMContentLoaded=function(){document.removeEventListener("DOMContentLoaded",DOMContentLoaded,false);S.load()}}else{if(document.attachEvent){DOMContentLoaded=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",DOMContentLoaded);S.load()}}}}function doScrollCheck(){if(loaded){return}try{document.documentElement.doScroll("left")}catch(e){setTimeout(doScrollCheck,1);return}S.load()}function bindLoad(){if(document.readyState==="complete"){return S.load()}if(document.addEventListener){document.addEventListener("DOMContentLoaded",DOMContentLoaded,false);window.addEventListener("load",S.load,false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",DOMContentLoaded);window.attachEvent("onload",S.load);var topLevel=false;try{topLevel=window.frameElement===null}catch(e){}if(document.documentElement.doScroll&&topLevel){doScrollCheck()}}}}S.load=function(){if(loaded){return}if(!document.body){return setTimeout(S.load,13)}loaded=true;checkSupport();S.onReady();if(!S.options.skipSetup){S.setup()}S.skin.init()};S.plugins={};if(navigator.plugins&&navigator.plugins.length){var names=[];each(navigator.plugins,function(i,p){names.push(p.name)});names=names.join(",");var f4m=names.indexOf("Flip4Mac")>-1;S.plugins={fla:names.indexOf("Shockwave Flash")>-1,qt:names.indexOf("QuickTime")>-1,wmp:!f4m&&names.indexOf("Windows Media")>-1,f4m:f4m}}else{var detectPlugin=function(name){var axo;try{axo=new ActiveXObject(name)}catch(e){}return !!axo};S.plugins={fla:detectPlugin("ShockwaveFlash.ShockwaveFlash"),qt:detectPlugin("QuickTime.QuickTime"),wmp:detectPlugin("wmplayer.ocx"),f4m:false}}var relAttr=/^(light|shadow)box/i,expando="shadowboxCacheKey",cacheKey=1;S.cache={};S.select=function(selector){var links=[];if(!selector){var rel;each(document.getElementsByTagName("a"),function(i,el){rel=el.getAttribute("rel");if(rel&&relAttr.test(rel)){links.push(el)}})}else{var length=selector.length;if(length){if(typeof selector=="string"){if(S.find){links=S.find(selector)}}else{if(length==2&&typeof selector[0]=="string"&&selector[1].nodeType){if(S.find){links=S.find(selector[0],selector[1])}}else{for(var i=0;i<length;++i){links[i]=selector[i]}}}}else{links.push(selector)}}return links};S.setup=function(selector,options){each(S.select(selector),function(i,link){S.addCache(link,options)})};S.teardown=function(selector){each(S.select(selector),function(i,link){S.removeCache(link)})};S.addCache=function(link,options){var key=link[expando];if(key==undefined){key=cacheKey++;link[expando]=key;addEvent(link,"click",handleClick)}S.cache[key]=S.makeObject(link,options)};S.removeCache=function(link){removeEvent(link,"click",handleClick);delete S.cache[link[expando]];link[expando]=null};S.getCache=function(link){var key=link[expando];return(key in S.cache&&S.cache[key])};S.clearCache=function(){for(var key in S.cache){S.removeCache(S.cache[key].link)}S.cache={}};function handleClick(e){S.open(this);if(S.gallery.length){preventDefault(e)}}
/*
* SWFObject v2.1 <http://code.google.com/p/swfobject/>
* Copyright (c) 2007-2008 Geoff Stearns,Michael Williams,and Bobby van der Sluis
* This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*
* Modified for inclusion in Shadowbox.js
*/
S.flash=(function(){var swfobject=function(){var UNDEF="undefined",OBJECT="object",SHOCKWAVE_FLASH="Shockwave Flash",SHOCKWAVE_FLASH_AX="ShockwaveFlash.ShockwaveFlash",FLASH_MIME_TYPE="application/x-shockwave-flash",EXPRESS_INSTALL_ID="SWFObjectExprInst",win=window,doc=document,nav=navigator,domLoadFnArr=[],regObjArr=[],objIdArr=[],listenersArr=[],script,timer=null,storedAltContent=null,storedAltContentId=null,isDomLoaded=false,isExpressInstallActive=false;var ua=function(){var w3cdom=typeof doc.getElementById!=UNDEF&&typeof doc.getElementsByTagName!=UNDEF&&typeof doc.createElement!=UNDEF,playerVersion=[0,0,0],d=null;if(typeof nav.plugins!=UNDEF&&typeof nav.plugins[SHOCKWAVE_FLASH]==OBJECT){d=nav.plugins[SHOCKWAVE_FLASH].description;if(d&&!(typeof nav.mimeTypes!=UNDEF&&nav.mimeTypes[FLASH_MIME_TYPE]&&!nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)){d=d.replace(/^.*\s+(\S+\s+\S+$)/,"$1");playerVersion[0]=parseInt(d.replace(/^(.*)\..*$/,"$1"),10);playerVersion[1]=parseInt(d.replace(/^.*\.(.*)\s.*$/,"$1"),10);playerVersion[2]=/r/.test(d)?parseInt(d.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof win.ActiveXObject!=UNDEF){var a=null,fp6Crash=false;try{a=new ActiveXObject(SHOCKWAVE_FLASH_AX+".7")}catch(e){try{a=new ActiveXObject(SHOCKWAVE_FLASH_AX+".6");playerVersion=[6,0,21];a.AllowScriptAccess="always"}catch(e){if(playerVersion[0]==6){fp6Crash=true}}if(!fp6Crash){try{a=new ActiveXObject(SHOCKWAVE_FLASH_AX)}catch(e){}}}if(!fp6Crash&&a){try{d=a.GetVariable("$version");if(d){d=d.split(" ")[1].split(",");playerVersion=[parseInt(d[0],10),parseInt(d[1],10),parseInt(d[2],10)]}}catch(e){}}}}var u=nav.userAgent.toLowerCase(),p=nav.platform.toLowerCase(),webkit=/webkit/.test(u)?parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,ie=false,windows=p?/win/.test(p):/win/.test(u),mac=p?/mac/.test(p):/mac/.test(u);
/*@cc_on
ie = true;
@if (@_win32)
windows = true;
@elif (@_mac)
mac = true;
@end
@*/
return{w3cdom:w3cdom,pv:playerVersion,webkit:webkit,ie:ie,win:windows,mac:mac}}();var onDomLoad=function(){if(!ua.w3cdom){return}addDomLoadEvent(main);if(ua.ie&&ua.win){try{doc.write("<script id=__ie_ondomload defer=true src=//:><\/script>");script=getElementById("__ie_ondomload");if(script){addListener(script,"onreadystatechange",checkReadyState)}}catch(e){}}if(ua.webkit&&typeof doc.readyState!=UNDEF){timer=setInterval(function(){if(/loaded|complete/.test(doc.readyState)){callDomLoadFunctions()}},10)}if(typeof doc.addEventListener!=UNDEF){doc.addEventListener("DOMContentLoaded",callDomLoadFunctions,null)}addLoadEvent(callDomLoadFunctions)}();function checkReadyState(){if(script.readyState=="complete"){script.parentNode.removeChild(script);callDomLoadFunctions()}}function callDomLoadFunctions(){if(isDomLoaded){return}if(ua.ie&&ua.win){var s=createElement("span");try{var t=doc.getElementsByTagName("body")[0].appendChild(s);t.parentNode.removeChild(t)}catch(e){return}}isDomLoaded=true;if(timer){clearInterval(timer);timer=null}var dl=domLoadFnArr.length;for(var i=0;i<dl;i++){domLoadFnArr[i]()}}function addDomLoadEvent(fn){if(isDomLoaded){fn()}else{domLoadFnArr[domLoadFnArr.length]=fn}}function addLoadEvent(fn){if(typeof win.addEventListener!=UNDEF){win.addEventListener("load",fn,false)}else{if(typeof doc.addEventListener!=UNDEF){doc.addEventListener("load",fn,false)}else{if(typeof win.attachEvent!=UNDEF){addListener(win,"onload",fn)}else{if(typeof win.onload=="function"){var fnOld=win.onload;win.onload=function(){fnOld();fn()}}else{win.onload=fn}}}}}function main(){var rl=regObjArr.length;for(var i=0;i<rl;i++){var id=regObjArr[i].id;if(ua.pv[0]>0){var obj=getElementById(id);if(obj){regObjArr[i].width=obj.getAttribute("width")?obj.getAttribute("width"):"0";regObjArr[i].height=obj.getAttribute("height")?obj.getAttribute("height"):"0";if(hasPlayerVersion(regObjArr[i].swfVersion)){if(ua.webkit&&ua.webkit<312){fixParams(obj)}setVisibility(id,true)}else{if(regObjArr[i].expressInstall&&!isExpressInstallActive&&hasPlayerVersion("6.0.65")&&(ua.win||ua.mac)){showExpressInstall(regObjArr[i])}else{displayAltContent(obj)}}}}else{setVisibility(id,true)}}}function fixParams(obj){var nestedObj=obj.getElementsByTagName(OBJECT)[0];if(nestedObj){var e=createElement("embed"),a=nestedObj.attributes;if(a){var al=a.length;for(var i=0;i<al;i++){if(a[i].nodeName=="DATA"){e.setAttribute("src",a[i].nodeValue)}else{e.setAttribute(a[i].nodeName,a[i].nodeValue)}}}var c=nestedObj.childNodes;if(c){var cl=c.length;for(var j=0;j<cl;j++){if(c[j].nodeType==1&&c[j].nodeName=="PARAM"){e.setAttribute(c[j].getAttribute("name"),c[j].getAttribute("value"))}}}obj.parentNode.replaceChild(e,obj)}}function showExpressInstall(regObj){isExpressInstallActive=true;var obj=getElementById(regObj.id);if(obj){if(regObj.altContentId){var ac=getElementById(regObj.altContentId);if(ac){storedAltContent=ac;storedAltContentId=regObj.altContentId}}else{storedAltContent=abstractAltContent(obj)}if(!(/%$/.test(regObj.width))&&parseInt(regObj.width,10)<310){regObj.width="310"}if(!(/%$/.test(regObj.height))&&parseInt(regObj.height,10)<137){regObj.height="137"}doc.title=doc.title.slice(0,47)+" - Flash Player Installation";var pt=ua.ie&&ua.win?"ActiveX":"PlugIn",dt=doc.title,fv="MMredirectURL="+win.location+"&MMplayerType="+pt+"&MMdoctitle="+dt,replaceId=regObj.id;if(ua.ie&&ua.win&&obj.readyState!=4){var newObj=createElement("div");replaceId+="SWFObjectNew";newObj.setAttribute("id",replaceId);obj.parentNode.insertBefore(newObj,obj);obj.style.display="none";var fn=function(){obj.parentNode.removeChild(obj)};addListener(win,"onload",fn)}createSWF({data:regObj.expressInstall,id:EXPRESS_INSTALL_ID,width:regObj.width,height:regObj.height},{flashvars:fv},replaceId)}}function displayAltContent(obj){if(ua.ie&&ua.win&&obj.readyState!=4){var el=createElement("div");obj.parentNode.insertBefore(el,obj);el.parentNode.replaceChild(abstractAltContent(obj),el);obj.style.display="none";var fn=function(){obj.parentNode.removeChild(obj)};addListener(win,"onload",fn)}else{obj.parentNode.replaceChild(abstractAltContent(obj),obj)}}function abstractAltContent(obj){var ac=createElement("div");if(ua.win&&ua.ie){ac.innerHTML=obj.innerHTML}else{var nestedObj=obj.getElementsByTagName(OBJECT)[0];if(nestedObj){var c=nestedObj.childNodes;if(c){var cl=c.length;for(var i=0;i<cl;i++){if(!(c[i].nodeType==1&&c[i].nodeName=="PARAM")&&!(c[i].nodeType==8)){ac.appendChild(c[i].cloneNode(true))}}}}}return ac}function createSWF(attObj,parObj,id){var r,el=getElementById(id);if(el){if(typeof attObj.id==UNDEF){attObj.id=id}if(ua.ie&&ua.win){var att="";for(var i in attObj){if(attObj[i]!=Object.prototype[i]){if(i.toLowerCase()=="data"){parObj.movie=attObj[i]}else{if(i.toLowerCase()=="styleclass"){att+=' class="'+attObj[i]+'"'}else{if(i.toLowerCase()!="classid"){att+=" "+i+'="'+attObj[i]+'"'}}}}}var par="";for(var j in parObj){if(parObj[j]!=Object.prototype[j]){par+='<param name="'+j+'" value="'+parObj[j]+'" />'}}el.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+att+">"+par+"</object>";objIdArr[objIdArr.length]=attObj.id;r=getElementById(attObj.id)}else{if(ua.webkit&&ua.webkit<312){var e=createElement("embed");e.setAttribute("type",FLASH_MIME_TYPE);for(var k in attObj){if(attObj[k]!=Object.prototype[k]){if(k.toLowerCase()=="data"){e.setAttribute("src",attObj[k])}else{if(k.toLowerCase()=="styleclass"){e.setAttribute("class",attObj[k])}else{if(k.toLowerCase()!="classid"){e.setAttribute(k,attObj[k])}}}}}for(var l in parObj){if(parObj[l]!=Object.prototype[l]){if(l.toLowerCase()!="movie"){e.setAttribute(l,parObj[l])}}}el.parentNode.replaceChild(e,el);r=e}else{var o=createElement(OBJECT);o.setAttribute("type",FLASH_MIME_TYPE);for(var m in attObj){if(attObj[m]!=Object.prototype[m]){if(m.toLowerCase()=="styleclass"){o.setAttribute("class",attObj[m])}else{if(m.toLowerCase()!="classid"){o.setAttribute(m,attObj[m])}}}}for(var n in parObj){if(parObj[n]!=Object.prototype[n]&&n.toLowerCase()!="movie"){createObjParam(o,n,parObj[n])}}el.parentNode.replaceChild(o,el);r=o}}}return r}function createObjParam(el,pName,pValue){var p=createElement("param");p.setAttribute("name",pName);p.setAttribute("value",pValue);el.appendChild(p)}function removeSWF(id){var obj=getElementById(id);if(obj&&(obj.nodeName=="OBJECT"||obj.nodeName=="EMBED")){if(ua.ie&&ua.win){if(obj.readyState==4){removeObjectInIE(id)}else{win.attachEvent("onload",function(){removeObjectInIE(id)})}}else{obj.parentNode.removeChild(obj)}}}function removeObjectInIE(id){var obj=getElementById(id);if(obj){for(var i in obj){if(typeof obj[i]=="function"){obj[i]=null}}obj.parentNode.removeChild(obj)}}function getElementById(id){var el=null;try{el=doc.getElementById(id)}catch(e){}return el}function createElement(el){return doc.createElement(el)}function addListener(target,eventType,fn){target.attachEvent(eventType,fn);listenersArr[listenersArr.length]=[target,eventType,fn]}function hasPlayerVersion(rv){var pv=ua.pv,v=rv.split(".");v[0]=parseInt(v[0],10);v[1]=parseInt(v[1],10)||0;v[2]=parseInt(v[2],10)||0;return(pv[0]>v[0]||(pv[0]==v[0]&&pv[1]>v[1])||(pv[0]==v[0]&&pv[1]==v[1]&&pv[2]>=v[2]))?true:false}function createCSS(sel,decl){if(ua.ie&&ua.mac){return}var h=doc.getElementsByTagName("head")[0],s=createElement("style");s.setAttribute("type","text/css");s.setAttribute("media","screen");if(!(ua.ie&&ua.win)&&typeof doc.createTextNode!=UNDEF){s.appendChild(doc.createTextNode(sel+" {"+decl+"}"))}h.appendChild(s);if(ua.ie&&ua.win&&typeof doc.styleSheets!=UNDEF&&doc.styleSheets.length>0){var ls=doc.styleSheets[doc.styleSheets.length-1];if(typeof ls.addRule==OBJECT){ls.addRule(sel,decl)}}}function setVisibility(id,isVisible){var v=isVisible?"visible":"hidden";if(isDomLoaded&&getElementById(id)){getElementById(id).style.visibility=v}else{createCSS("#"+id,"visibility:"+v)}}function urlEncodeIfNecessary(s){var regex=/[\\\"<>\.;]/;var hasBadChars=regex.exec(s)!=null;return hasBadChars?encodeURIComponent(s):s}var cleanup=function(){if(ua.ie&&ua.win){window.attachEvent("onunload",function(){var ll=listenersArr.length;for(var i=0;i<ll;i++){listenersArr[i][0].detachEvent(listenersArr[i][1],listenersArr[i][2])}var il=objIdArr.length;for(var j=0;j<il;j++){removeSWF(objIdArr[j])}for(var k in ua){ua[k]=null}ua=null;for(var l in swfobject){swfobject[l]=null}swfobject=null})}}();return{registerObject:function(objectIdStr,swfVersionStr,xiSwfUrlStr){if(!ua.w3cdom||!objectIdStr||!swfVersionStr){return}var regObj={};regObj.id=objectIdStr;regObj.swfVersion=swfVersionStr;regObj.expressInstall=xiSwfUrlStr?xiSwfUrlStr:false;regObjArr[regObjArr.length]=regObj;setVisibility(objectIdStr,false)},getObjectById:function(objectIdStr){var r=null;if(ua.w3cdom){var o=getElementById(objectIdStr);if(o){var n=o.getElementsByTagName(OBJECT)[0];if(!n||(n&&typeof o.SetVariable!=UNDEF)){r=o}else{if(typeof n.SetVariable!=UNDEF){r=n}}}}return r},embedSWF:function(swfUrlStr,replaceElemIdStr,widthStr,heightStr,swfVersionStr,xiSwfUrlStr,flashvarsObj,parObj,attObj){if(!ua.w3cdom||!swfUrlStr||!replaceElemIdStr||!widthStr||!heightStr||!swfVersionStr){return}widthStr+="";heightStr+="";if(hasPlayerVersion(swfVersionStr)){setVisibility(replaceElemIdStr,false);var att={};if(attObj&&typeof attObj===OBJECT){for(var i in attObj){if(attObj[i]!=Object.prototype[i]){att[i]=attObj[i]}}}att.data=swfUrlStr;att.width=widthStr;att.height=heightStr;var par={};if(parObj&&typeof parObj===OBJECT){for(var j in parObj){if(parObj[j]!=Object.prototype[j]){par[j]=parObj[j]}}}if(flashvarsObj&&typeof flashvarsObj===OBJECT){for(var k in flashvarsObj){if(flashvarsObj[k]!=Object.prototype[k]){if(typeof par.flashvars!=UNDEF){par.flashvars+="&"+k+"="+flashvarsObj[k]}else{par.flashvars=k+"="+flashvarsObj[k]}}}}addDomLoadEvent(function(){createSWF(att,par,replaceElemIdStr);if(att.id==replaceElemIdStr){setVisibility(replaceElemIdStr,true)}})}else{if(xiSwfUrlStr&&!isExpressInstallActive&&hasPlayerVersion("6.0.65")&&(ua.win||ua.mac)){isExpressInstallActive=true;setVisibility(replaceElemIdStr,false);addDomLoadEvent(function(){var regObj={};regObj.id=regObj.altContentId=replaceElemIdStr;regObj.width=widthStr;regObj.height=heightStr;regObj.expressInstall=xiSwfUrlStr;showExpressInstall(regObj)})}}},getFlashPlayerVersion:function(){return{major:ua.pv[0],minor:ua.pv[1],release:ua.pv[2]}},hasFlashPlayerVersion:hasPlayerVersion,createSWF:function(attObj,parObj,replaceElemIdStr){if(ua.w3cdom){return createSWF(attObj,parObj,replaceElemIdStr)}else{return undefined}},removeSWF:function(objElemIdStr){if(ua.w3cdom){removeSWF(objElemIdStr)}},createCSS:function(sel,decl){if(ua.w3cdom){createCSS(sel,decl)}},addDomLoadEvent:addDomLoadEvent,addLoadEvent:addLoadEvent,getQueryParamValue:function(param){var q=doc.location.search||doc.location.hash;if(param==null){return urlEncodeIfNecessary(q)}if(q){var pairs=q.substring(1).split("&");for(var i=0;i<pairs.length;i++){if(pairs[i].substring(0,pairs[i].indexOf("="))==param){return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(isExpressInstallActive&&storedAltContent){var obj=getElementById(EXPRESS_INSTALL_ID);if(obj){obj.parentNode.replaceChild(storedAltContent,obj);if(storedAltContentId){setVisibility(storedAltContentId,true);if(ua.ie&&ua.win){storedAltContent.style.display="block"}}storedAltContent=null;storedAltContentId=null;isExpressInstallActive=false}}}}}();return swfobject})();S.lang={code:"de",of:"von",loading:"loading",cancel:"Abbrechen",next:"Nächste",previous:"Vorige",play:"Abspielen",pause:"Pause",close:"Schließen",errors:{single:'Um den Inhalt anzeigen zu können muss die Browser-Erweiterung <a href="{0}">{1}</a> installiert werden.',shared:'Um den Inhalt anzeigen zu können müssen die beiden Browser-Erweiterungen <a href="{0}">{1}</a> und <a href="{2}">{3}</a> installiert werden.',either:'Um den Inhalt anzeigen zu können muss eine der beiden Browser-Erweiterungen <a href="{0}">{1}</a> oder <a href="{2}">{3}</a> installiert werden.'}};var pre,proxyId="sb-drag-proxy",dragData,dragProxy,dragTarget;function resetDrag(){dragData={x:0,y:0,startX:null,startY:null}}function updateProxy(){var dims=S.dimensions;apply(dragProxy.style,{height:dims.innerHeight+"px",width:dims.innerWidth+"px"})}function enableDrag(){resetDrag();var style=["position:absolute","cursor:"+(S.isGecko?"-moz-grab":"move"),"background-color:"+(S.isIE?"#fff;filter:alpha(opacity=0)":"transparent")].join(";");S.appendHTML(S.skin.body,'<div id="'+proxyId+'" style="'+style+'"></div>');dragProxy=get(proxyId);updateProxy();addEvent(dragProxy,"mousedown",startDrag)}function disableDrag(){if(dragProxy){removeEvent(dragProxy,"mousedown",startDrag);remove(dragProxy);dragProxy=null}dragTarget=null}function startDrag(e){preventDefault(e);var xy=getPageXY(e);dragData.startX=xy[0];dragData.startY=xy[1];dragTarget=get(S.player.id);addEvent(document,"mousemove",positionDrag);addEvent(document,"mouseup",endDrag);if(S.isGecko){dragProxy.style.cursor="-moz-grabbing"}}function positionDrag(e){var player=S.player,dims=S.dimensions,xy=getPageXY(e);var moveX=xy[0]-dragData.startX;dragData.startX+=moveX;dragData.x=Math.max(Math.min(0,dragData.x+moveX),dims.innerWidth-player.width);var moveY=xy[1]-dragData.startY;dragData.startY+=moveY;dragData.y=Math.max(Math.min(0,dragData.y+moveY),dims.innerHeight-player.height);apply(dragTarget.style,{left:dragData.x+"px",top:dragData.y+"px"})}function endDrag(){removeEvent(document,"mousemove",positionDrag);removeEvent(document,"mouseup",endDrag);if(S.isGecko){dragProxy.style.cursor="-moz-grab"}}S.img=function(obj,id){this.obj=obj;this.id=id;this.ready=false;var self=this;pre=new Image();pre.onload=function(){self.height=obj.height?parseInt(obj.height,10):pre.height;self.width=obj.width?parseInt(obj.width,10):pre.width;self.ready=true;pre.onload=null;pre=null};pre.src=obj.content};S.img.ext=["bmp","gif","jpg","jpeg","png"];S.img.prototype={append:function(body,dims){var img=document.createElement("img");img.id=this.id;img.src=this.obj.content;img.style.position="absolute";var height,width;if(dims.oversized&&S.options.handleOversize=="resize"){height=dims.innerHeight;width=dims.innerWidth}else{height=this.height;width=this.width}img.setAttribute("height",height);img.setAttribute("width",width);body.appendChild(img)},remove:function(){var el=get(this.id);if(el){remove(el)}disableDrag();if(pre){pre.onload=null;pre=null}},onLoad:function(){var dims=S.dimensions;if(dims.oversized&&S.options.handleOversize=="drag"){enableDrag()}},onWindowResize:function(){var dims=S.dimensions;switch(S.options.handleOversize){case"resize":var el=get(this.id);el.height=dims.innerHeight;el.width=dims.innerWidth;break;case"drag":if(dragTarget){var top=parseInt(S.getStyle(dragTarget,"top")),left=parseInt(S.getStyle(dragTarget,"left"));if(top+this.height<dims.innerHeight){dragTarget.style.top=dims.innerHeight-this.height+"px"}if(left+this.width<dims.innerWidth){dragTarget.style.left=dims.innerWidth-this.width+"px"}updateProxy()}break}}};S.iframe=function(obj,id){this.obj=obj;this.id=id;var overlay=get("sb-overlay");this.height=obj.height?parseInt(obj.height,10):overlay.offsetHeight;this.width=obj.width?parseInt(obj.width,10):overlay.offsetWidth};S.iframe.prototype={append:function(body,dims){var html='<iframe id="'+this.id+'" name="'+this.id+'" height="100%" width="100%" frameborder="0" marginwidth="0" marginheight="0" style="visibility:hidden" onload="this.style.visibility=\'visible\'" scrolling="auto"';if(S.isIE){html+=' allowtransparency="true"';if(S.isIE6){html+=" src=\"javascript:false;document.write('');\""}}html+="></iframe>";body.innerHTML=html},remove:function(){var el=get(this.id);if(el){remove(el);if(S.isGecko){delete window.frames[this.id]}}},onLoad:function(){var win=S.isIE?get(this.id).contentWindow:window.frames[this.id];win.location.href=this.obj.content}};S.html=function(obj,id){this.obj=obj;this.id=id;this.height=obj.height?parseInt(obj.height,10):300;this.width=obj.width?parseInt(obj.width,10):500};S.html.prototype={append:function(body,dims){var div=document.createElement("div");div.id=this.id;div.className="html";div.innerHTML=this.obj.content;body.appendChild(div)},remove:function(){var el=get(this.id);if(el){remove(el)}}};S.swf=function(obj,id){this.obj=obj;this.id=id;this.height=obj.height?parseInt(obj.height,10):300;this.width=obj.width?parseInt(obj.width,10):300};S.swf.ext=["swf"];S.swf.prototype={append:function(body,dims){var tmp=document.createElement("div");tmp.id=this.id;body.appendChild(tmp);var height=dims.innerHeight,width=dims.innerWidth,swf=this.obj.content,version=S.options.flashVersion,express=S.path+"expressInstall.swf",flashvars=S.options.flashVars,params=S.options.flashParams;S.flash.embedSWF(swf,this.id,width,height,version,express,flashvars,params)},remove:function(){S.flash.expressInstallCallback();S.flash.removeSWF(this.id)},onWindowResize:function(){var dims=S.dimensions,el=get(this.id);el.height=dims.innerHeight;el.width=dims.innerWidth}};var jwControllerHeight=20;S.flv=function(obj,id){this.obj=obj;this.id=id;this.height=obj.height?parseInt(obj.height,10):300;if(S.options.showMovieControls){this.height+=jwControllerHeight}this.width=obj.width?parseInt(obj.width,10):300};S.flv.ext=["flv","m4v"];S.flv.prototype={append:function(body,dims){var tmp=document.createElement("div");tmp.id=this.id;body.appendChild(tmp);var height=dims.innerHeight,width=dims.innerWidth,swf=S.path+"player.swf",version=S.options.flashVersion,express=S.path+"expressInstall.swf",flashvars=apply({file:this.obj.content,height:height,width:width,autostart:(S.options.autoplayMovies?"true":"false"),controlbar:(S.options.showMovieControls?"bottom":"none"),backcolor:"0x000000",frontcolor:"0xCCCCCC",lightcolor:"0x557722"},S.options.flashVars),params=S.options.flashParams;S.flash.embedSWF(swf,this.id,width,height,version,express,flashvars,params)},remove:function(){S.flash.expressInstallCallback();S.flash.removeSWF(this.id)},onWindowResize:function(){var dims=S.dimensions,el=get(this.id);el.height=dims.innerHeight;el.width=dims.innerWidth}};var qtControllerHeight=16;S.qt=function(obj,id){this.obj=obj;this.id=id;this.height=obj.height?parseInt(obj.height,10):300;if(S.options.showMovieControls){this.height+=qtControllerHeight}this.width=obj.width?parseInt(obj.width,10):300};S.qt.ext=["dv","mov","moov","movie","mp4","avi","mpg","mpeg"];S.qt.prototype={append:function(body,dims){var opt=S.options,autoplay=String(opt.autoplayMovies),controls=String(opt.showMovieControls);var html="<object",movie={id:this.id,name:this.id,height:this.height,width:this.width,kioskmode:"true"};if(S.isIE){movie.classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";movie.codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"}else{movie.type="video/quicktime";movie.data=this.obj.content}for(var m in movie){html+=" "+m+'="'+movie[m]+'"'}html+=">";var params={src:this.obj.content,scale:"aspect",controller:controls,autoplay:autoplay};for(var p in params){html+='<param name="'+p+'" value="'+params[p]+'">'}html+="</object>";body.innerHTML=html},remove:function(){try{document[this.id].Stop()}catch(e){}var el=get(this.id);if(el){remove(el)}}};var wmpControllerHeight=(S.isIE?70:45);S.wmp=function(obj,id){this.obj=obj;this.id=id;this.height=obj.height?parseInt(obj.height,10):300;if(S.options.showMovieControls){this.height+=wmpControllerHeight}this.width=obj.width?parseInt(obj.width,10):300};S.wmp.ext=["asf","avi","mpg","mpeg","wm","wmv"];S.wmp.prototype={append:function(body,dims){var opt=S.options,autoplay=opt.autoplayMovies?1:0;var movie='<object id="'+this.id+'" name="'+this.id+'" height="'+this.height+'" width="'+this.width+'"',params={autostart:opt.autoplayMovies?1:0};if(S.isIE){movie+=' classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"';params.url=this.obj.content;params.uimode=opt.showMovieControls?"full":"none"}else{movie+=' type="video/x-ms-wmv"';movie+=' data="'+this.obj.content+'"';params.showcontrols=opt.showMovieControls?1:0}movie+=">";for(var p in params){movie+='<param name="'+p+'" value="'+params[p]+'">'}movie+="</object>";body.innerHTML=movie},remove:function(){if(S.isIE){try{window[this.id].controls.stop();window[this.id].URL="movie"+now()+".wmv";window[this.id]=function(){}}catch(e){}}var el=get(this.id);if(el){setTimeout(function(){remove(el)},10)}}};var overlayOn=false,visibilityCache=[],pngIds=["sb-nav-close","sb-nav-next","sb-nav-play","sb-nav-pause","sb-nav-previous"],container,overlay,wrapper,doWindowResize=true;function animate(el,property,to,duration,callback){var isOpacity=(property=="opacity"),anim=isOpacity?S.setOpacity:function(el,value){el.style[property]=""+value+"px"};if(duration==0||(!isOpacity&&!S.options.animate)||(isOpacity&&!S.options.animateFade)){anim(el,to);if(callback){callback()}return}var from=parseFloat(S.getStyle(el,property))||0;var delta=to-from;if(delta==0){if(callback){callback()}return}duration*=1000;var begin=now(),ease=S.ease,end=begin+duration,time;var interval=setInterval(function(){time=now();if(time>=end){clearInterval(interval);interval=null;anim(el,to);if(callback){callback()}}else{anim(el,from+ease((time-begin)/duration)*delta)}},10)}function setSize(){container.style.height=S.getWindowSize("Height")+"px";container.style.width=S.getWindowSize("Width")+"px"}function setPosition(){container.style.top=document.documentElement.scrollTop+"px";container.style.left=document.documentElement.scrollLeft+"px"}function toggleTroubleElements(on){if(on){each(visibilityCache,function(i,el){el[0].style.visibility=el[1]||""})}else{visibilityCache=[];each(S.options.troubleElements,function(i,tag){each(document.getElementsByTagName(tag),function(j,el){visibilityCache.push([el,el.style.visibility]);el.style.visibility="hidden"})})}}function toggleNav(id,on){var el=get("sb-nav-"+id);if(el){el.style.display=on?"":"none"}}function toggleLoading(on,callback){var loading=get("sb-loading"),playerName=S.getCurrent().player,anim=(playerName=="img"||playerName=="html");if(on){S.setOpacity(loading,0);loading.style.display="block";var wrapped=function(){S.clearOpacity(loading);if(callback){callback()}};if(anim){animate(loading,"opacity",1,S.options.fadeDuration,wrapped)}else{wrapped()}}else{var wrapped=function(){loading.style.display="none";S.clearOpacity(loading);if(callback){callback()}};if(anim){animate(loading,"opacity",0,S.options.fadeDuration,wrapped)}else{wrapped()}}}function buildBars(callback){var obj=S.getCurrent();get("sb-title-inner").innerHTML=obj.title||"";var close,next,play,pause,previous;if(S.options.displayNav){close=true;var len=S.gallery.length;if(len>1){if(S.options.continuous){next=previous=true}else{next=(len-1)>S.current;previous=S.current>0}}if(S.options.slideshowDelay>0&&S.hasNext()){pause=!S.isPaused();play=!pause}}else{close=next=play=pause=previous=false}toggleNav("close",close);toggleNav("next",next);toggleNav("play",play);toggleNav("pause",pause);toggleNav("previous",previous);var counter="";if(S.options.displayCounter&&S.gallery.length>1){var len=S.gallery.length;if(S.options.counterType=="skip"){var i=0,end=len,limit=parseInt(S.options.counterLimit)||0;if(limit<len&&limit>2){var h=Math.floor(limit/2);i=S.current-h;if(i<0){i+=len}end=S.current+(limit-h);if(end>len){end-=len}}while(i!=end){if(i==len){i=0}counter+='<a onclick="Shadowbox.change('+i+');"';if(i==S.current){counter+=' class="sb-counter-current"'}counter+=">"+(++i)+"</a>"}}else{counter=[S.current+1,S.lang.of,len].join(" ")}}get("sb-counter").innerHTML=counter;callback()}function showBars(callback){var titleInner=get("sb-title-inner"),infoInner=get("sb-info-inner"),duration=0.35;titleInner.style.visibility=infoInner.style.visibility="";if(titleInner.innerHTML!=""){animate(titleInner,"marginTop",0,duration)}animate(infoInner,"marginTop",0,duration,callback)}function hideBars(anim,callback){var title=get("sb-title"),info=get("sb-info"),titleHeight=title.offsetHeight,infoHeight=info.offsetHeight,titleInner=get("sb-title-inner"),infoInner=get("sb-info-inner"),duration=(anim?0.35:0);animate(titleInner,"marginTop",titleHeight,duration);animate(infoInner,"marginTop",infoHeight*-1,duration,function(){titleInner.style.visibility=infoInner.style.visibility="hidden";callback()})}function adjustHeight(height,top,anim,callback){var wrapperInner=get("sb-wrapper-inner"),duration=(anim?S.options.resizeDuration:0);animate(wrapper,"top",top,duration);animate(wrapperInner,"height",height,duration,callback)}function adjustWidth(width,left,anim,callback){var duration=(anim?S.options.resizeDuration:0);animate(wrapper,"left",left,duration);animate(wrapper,"width",width,duration,callback)}function setDimensions(height,width){var bodyInner=get("sb-body-inner"),height=parseInt(height),width=parseInt(width),topBottom=wrapper.offsetHeight-bodyInner.offsetHeight,leftRight=wrapper.offsetWidth-bodyInner.offsetWidth,maxHeight=overlay.offsetHeight,maxWidth=overlay.offsetWidth,padding=parseInt(S.options.viewportPadding)||20,preserveAspect=(S.player&&S.options.handleOversize!="drag");return S.setDimensions(height,width,maxHeight,maxWidth,topBottom,leftRight,padding,preserveAspect)}var K={};K.markup='<div id="sb-container"><div id="sb-overlay"></div><div id="sb-wrapper"><div id="sb-background"></div><div id="sb-wrapper-body"><div id="sb-title"><div id="sb-title-inner"></div></div><div id="sb-wrapper-inner"><div id="sb-body"><div id="sb-body-inner"></div><div id="sb-loading"><div id="sb-loading-inner"><span>{loading}</span></div></div></div></div><div id="sb-info"><div id="sb-info-inner"><div id="sb-counter"></div><div id="sb-nav"><a id="sb-nav-close" title="{close}" onclick="Shadowbox.close()"></a><a id="sb-nav-next" title="{next}" onclick="Shadowbox.next()"></a><a id="sb-nav-play" title="{play}" onclick="Shadowbox.play()"></a><a id="sb-nav-pause" title="{pause}" onclick="Shadowbox.pause()"></a><a id="sb-nav-previous" title="{previous}" onclick="Shadowbox.previous()"></a></div></div></div></div></div></div>';K.options={animSequence:"sync",counterLimit:10,counterType:"default",displayCounter:true,displayNav:true,fadeDuration:0.35,initialHeight:160,initialWidth:320,modal:false,overlayColor:"#000",overlayOpacity:0.5,resizeDuration:0.35,showOverlay:true,troubleElements:["select","object","embed","canvas"]};K.init=function(){S.appendHTML(document.body,sprintf(K.markup,S.lang));K.body=get("sb-body-inner");container=get("sb-container");overlay=get("sb-overlay");wrapper=get("sb-wrapper");if(!supportsFixed){container.style.position="absolute"}if(!supportsOpacity){var el,m,re=/url\("(.*\.png)"\)/;each(pngIds,function(i,id){el=get(id);if(el){m=S.getStyle(el,"backgroundImage").match(re);if(m){el.style.backgroundImage="none";el.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src="+m[1]+",sizingMethod=scale);"}}})}var timer;addEvent(window,"resize",function(){if(timer){clearTimeout(timer);timer=null}if(open){timer=setTimeout(K.onWindowResize,10)}})};K.onOpen=function(obj,callback){doWindowResize=false;container.style.display="block";setSize();var dims=setDimensions(S.options.initialHeight,S.options.initialWidth);adjustHeight(dims.innerHeight,dims.top);adjustWidth(dims.width,dims.left);if(S.options.showOverlay){overlay.style.backgroundColor=S.options.overlayColor;S.setOpacity(overlay,0);if(!S.options.modal){addEvent(overlay,"click",S.close)}overlayOn=true}if(!supportsFixed){setPosition();addEvent(window,"scroll",setPosition)}toggleTroubleElements();container.style.visibility="visible";if(overlayOn){animate(overlay,"opacity",S.options.overlayOpacity,S.options.fadeDuration,callback)}else{callback()}};K.onLoad=function(changing,callback){toggleLoading(true);while(K.body.firstChild){remove(K.body.firstChild)}hideBars(changing,function(){if(!open){return}if(!changing){wrapper.style.visibility="visible"}buildBars(callback)})};K.onReady=function(callback){if(!open){return}var player=S.player,dims=setDimensions(player.height,player.width);var wrapped=function(){showBars(callback)};switch(S.options.animSequence){case"hw":adjustHeight(dims.innerHeight,dims.top,true,function(){adjustWidth(dims.width,dims.left,true,wrapped)});break;case"wh":adjustWidth(dims.width,dims.left,true,function(){adjustHeight(dims.innerHeight,dims.top,true,wrapped)});break;default:adjustWidth(dims.width,dims.left,true);adjustHeight(dims.innerHeight,dims.top,true,wrapped)}};K.onShow=function(callback){toggleLoading(false,callback);doWindowResize=true};K.onClose=function(){if(!supportsFixed){removeEvent(window,"scroll",setPosition)}removeEvent(overlay,"click",S.close);wrapper.style.visibility="hidden";var callback=function(){container.style.visibility="hidden";container.style.display="none";toggleTroubleElements(true)};if(overlayOn){animate(overlay,"opacity",0,S.options.fadeDuration,callback)}else{callback()}};K.onPlay=function(){toggleNav("play",false);toggleNav("pause",true)};K.onPause=function(){toggleNav("pause",false);toggleNav("play",true)};K.onWindowResize=function(){if(!doWindowResize){return}setSize();var player=S.player,dims=setDimensions(player.height,player.width);adjustWidth(dims.width,dims.left);adjustHeight(dims.innerHeight,dims.top);if(player.onWindowResize){player.onWindowResize()}};S.skin=K;window.Shadowbox=S})(window);
Event.observe(window,'load',function() {
Shadowbox.init({
handleOversize:     "resize",autoplayMovies:     false
});
});
var Reflector = {
reflect: function(element) {
element = $(element);
options = $H({
amount: 1/3,opacity: 1/3
}).merge(arguments[1] || {});
var p = element.parentNode,n = element.nextSibling;
var d = 1.0/(element.height*options.amount);
(element.height*options.amount).times( function(line) {
var h = Builder.node('div',{style:'height:1px;overflow:hidden'},[Builder.node('img',{src:element.src,style:'margin-top:-'+(element.height-line-1)+'px'
})]);
p.insertBefore(h,n);
$(h).setOpacity((1-d*line)*options.opacity);
});
}
}
// ---------------------------------------------------------------------------
// Javascript:ovToolkit
// ---------------------------------------------------------------------------
function ovToolkitObject()
{
this.isLocal = document.URL.indexOf("localhost");
this.isStage = document.URL.indexOf("stagekicker");
this.isMSNStage = document.URL.indexOf("stagemsn");
this.isMSNLive = document.URL.indexOf("sport.msn.de");
this.rootURL = "http://www.kicker.de";
this.player169URL = this.rootURL + "/flash/smallPlayerWide.swf";
this.playerPopupURL = '/flash/kickerplayer43_2.swf';
this.playerPlaylistURL = "" + "/videoplaylist";
this.playerJuniorenPlaylistURL = "" + "/junioren/videoplaylist";
this.playerVideoPath = 'http://video.kicker.de/flash/';
this.defaultFontSize = 1.02;
this.actFontSize = 1.02;
}
var ovToolkit = new ovToolkitObject();
///* Style Switcher */
function setActiveStyleSheet(title) {
var i,a,main;
for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
a.disabled = true;
if(a.getAttribute("title") == title) a.disabled = false;
}
}
}
ovToolkit.print = function(evt)
{
setActiveStyleSheet('ovprintcss');
if (document.getElementById('tb_printtopa')) {
document.getElementById('tb_printtopa').href = "javascript:ovToolkit.printback(this);";
document.getElementById('tb_printtopa').style.width = "125px";
document.getElementById('tb_printtopa').style.display ="block";
}
if (document.getElementById('tb_printtop')) {
document.getElementById('tb_printtop').innerHTML = "Normalansicht";
document.getElementById('tb_printtop').style.visibility ="visible";
document.getElementById('tb_printtop').style.display ="block";
}
if (document.getElementById('tb_printbota')) {
document.getElementById('tb_printbota').href = "javascript:ovToolkit.printback(this);";
document.getElementById('tb_printbota').style.width = "125px";
}
if (document.getElementById('tb_printbot')) {
document.getElementById('tb_printbot').innerHTML = "Normalansicht";
document.getElementById('tb_printbot').style.visibility ="visible";
document.getElementById('tb_printbot').style.display ="block";
}
if (document.getElementById('super_anz')) {
document.getElementById('super_anz').style.display ="none";
document.getElementById('super_anz').style.visibility ="hidden";
}
if (document.getElementById('tb_printart')) {
document.getElementById('tb_printart').href = "javascript:ovToolkit.printback(this);";
}
var bName = navigator.appName;
var bVer = navigator.appVersion;
var br;
if (((bName == "Netscape" && bVer > "3.0") && (bName == "Netscape" && bVer  < "4.01"))
||
((bName == "Netscape" && bVer >= "4.03"))
||
(bName == "Microsoft Internet Explorer" && bVer >= "4.0"))
br = "n3";
else br = "n2";
if (br == "n3") {
self.print();
}
else {
alert ("Ihr Browser unterst&uuml;tzt dieses Feature nicht.\nBitte drucken Sie &uuml;ber Datei  >>  Drucken !");
}
}
ovToolkit.printback = function()
{
setActiveStyleSheet('ov');
if (document.getElementById('tb_printtopa')) {
document.getElementById('tb_printtopa').href = "javascript:ovToolkit.print(this);";
document.getElementById('tb_printtopa').style.width = "";
document.getElementById('tb_printtopa').style.display ="";
}
if (document.getElementById('tb_printtop')) {
document.getElementById('tb_printtop').innerHTML = "Druckansicht";
document.getElementById('tb_printtop').style.visibility ="";
document.getElementById('tb_printtop').style.display ="";
}
if (document.getElementById('tb_printbota')) {
document.getElementById('tb_printbota').href = "javascript:ovToolkit.print(this);";
document.getElementById('tb_printbota').style.width = "";
}
if (document.getElementById('tb_printbot')) {
document.getElementById('tb_printbot').innerHTML = "Druckansicht";
document.getElementById('tb_printbot').style.visibility ="";
document.getElementById('tb_printbot').style.display ="";
}
if (document.getElementById('super_anz')) {
document.getElementById('super_anz').style.display ="block";
document.getElementById('super_anz').style.visibility ="visible";
}
if (document.getElementById('tb_printart')) {
document.getElementById('tb_printart').href = "javascript:ovToolkit.print(this);";
}
}
ovToolkit.changeTxtSize = function(mode)
{
if (mode==1){
if (parseFloat(ovToolkit.defaultFontSize)+0.3>=parseFloat(ovToolkit.actFontSize))
ovToolkit.actFontSize = parseFloat(ovToolkit.actFontSize)+0.10;
}else{
if (parseFloat(ovToolkit.defaultFontSize)<parseFloat(ovToolkit.actFontSize))
ovToolkit.actFontSize = parseFloat(ovToolkit.actFontSize)-0.10;
}
document.getElementById('content').style.fontSize = ovToolkit.actFontSize + "em";
}
ovToolkit.CheckPagingImages = function()
{
var pagingLeft = $('paging-left');
var pagingRight = $('paging-right');
if (currSliderIndex > 5 ) {
pagingLeft.src = 'http://mediadb.kicker.de/library/image/paging-left.png';
}
else {
pagingLeft.src = 'http://mediadb.kicker.de/library/image/paging-left-inakt.png';
}
if (currSliderIndex < lastSliderIndex ) {
pagingRight.src = 'http://mediadb.kicker.de/library/image/paging-right.png';
}
else {
pagingRight.src = 'http://mediadb.kicker.de/library/image/paging-right-inakt.png';
}
}
ovToolkit.GetHashParams = function()
{
var loc=(document.location+"");
var pos=loc.indexOf("#");
if (pos == -1)
return [];
var hashQs=loc.substring(pos+1,loc.length);
return ovToolkit.SplitParams(hashQs);
}
ovToolkit.SplitParams = function(params)
{
var result=[];
var pairs=params.split("&");
for (var i=0; i < pairs.length; i++) {
var kv=pairs[i].split("=");
if (kv.length == 2)
result[kv[0]]=kv[1];
}
return result;
}
ovToolkit.ShowOASPos = function(pos)
{
return false;
}
function OAS_RICH(pos)
{
ovToolkit.ShowOASPos(pos);
}
ovToolkit.AlertIfIPhone = function()
{
if (document.URL.indexOf("www.kicker.de")>-1){
var Check = false;
if (navigator.userAgent.toLowerCase().indexOf("iphone") > -1 && document.referrer.indexOf("kicker.de")==-1 && document.referrer.indexOf("localhost")==-1){
Check = confirm("kicker f&uuml;r Ihr iPhone. Zur iPhone ? Applikation wechseln?");
if (Check == true){window.location.href = "http://iphone.kicker.mobi";}
}else{
ovToolkit.ovRedirectIfMobileClient();
}
}
}
ovToolkit.ovShowHidePages = function(show,hidde) {
ovAjax.ShowElem(show);
ovAjax.HideElem(hidde);
}
var ovMobileClients=[
"midp","240x320","blackberry","netfront","nokia","panasonic","portalmmm","sharp","sie-","sonyericsson","symbian","windows ce","benq","mda","mot-","opera mini","philips","pocket pc","sagem","samsung","sda","sgh-","vodafone","xda"
];
ovToolkit.ovIsMobileClient = function(userAgent)
{
try {
userAgent=userAgent.toLowerCase();
for (var i=0; i < ovMobileClients.length; i++)
if (userAgent.indexOf(ovMobileClients[i]) != -1)
return true;
}
catch (e) {
}
return false;
}
ovToolkit.ovIsThisBrowserMobileClient = function()
{
return ovToolkit.ovIsMobileClient(navigator.userAgent);
}
ovToolkit.ovRedirectIfMobileClient = function()
{
try {
if (ovToolkit.ovIsThisBrowserMobileClient()) {
if (document.location.href.indexOf('nomobile') != -1) {
var jetzt = new Date();
var heute = jetzt.getTime();
var dann = heute + (90 * 24 * 60 * 60 * 1000);
jetzt.setTime(dann);
document.cookie = "kickermobile=nomobile;Path=/;expires=" + jetzt.toString();
return;
}
if (document.cookie && document.cookie.indexOf('nomobile') != -1) {
return;
}
document.location.href="http://www.kicker.mobi?redirect=1";
}
}
catch(e){
}
}
ovToolkit.CheckNavi = function()
{
if (ovAuth.authExists()){
for (var i=0; i<30; i++){
var elm = document.getElementById("ovNavi"+i.toString());
if (elm!=null){
ovToolkit.ReplaceHref(elm)
}else{
break;
}
}
}
}
ovToolkit.ReplaceHref = function(AObject)
{
var aHref=AObject.href;
var manid=ovAuth.getCookieProp("teilnehmer","userid");
if (aHref.lastIndexOf("/") == aHref.length-1){
AObject.href = aHref + "manid/"+manid;
}else{
AObject.href = aHref + "/manid/"+manid;
}
}
// Gibt die aktuelle X-Position des Mauszeigers zurueck
ovToolkit.mouseX = function(evt)
{
if (evt.pageX)
return evt.pageX;
else if (evt.clientX)
return evt.clientX + document.body.scrollLeft;
else
return null;
}
// Gibt die aktuelle Y-Position des Mauszeigers zurueck
ovToolkit.mouseY = function(evt)
{
if (evt.pageY)
return evt.pageY;
else if (evt.clientY){
var scrollPos=0;
if (typeof window.pageYOffset != 'undefined') {
scrollPos = window.pageYOffset;
}else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') {
scrollPos = document.documentElement.scrollTop;
}else if (typeof document.body != 'undefined') {
scrollPos = document.body.scrollTop;
}
return evt.clientY + scrollPos;
}
else
return null;
}
ovToolkit.formatUrl = function(url)
{
url = url.replace(/&amp;/g,"&");
return url;
}
ovToolkit.clearSuchTextField = function()
{
var elm;
elm = document.getElementById("inputsuche");
if (elm.value == "Suche")
elm.value = "";
}
ovToolkit.makeRemote = function(url)
{
window.location.href = url;
}
ovToolkit.openNewWindow = function(url)
{
window.open(url,"kicker","");
return;
}
ovToolkit.OpenPage = function(url,ctrl)
{
nameParts = ctrl.name.split('$');
window.location.href = url + '/' + nameParts[nameParts.length-1] + '/' + ctrl.value;
}
ovToolkit.Startseite = function()
{
var Seite="http://www.kicker.de";
var browser=navigator.appName;
var version=navigator.appVersion.substring(0,1);
var ie = ((browser == "Microsoft Internet Explorer") && (version >= 4));
var strText;
if (ie)	{
document.body.style.behavior="url(#default#homepage)";
document.body.sethomepage(Seite);
}
else {
strText =  "kicker.de kann nur im Internet Explorer ";
strText += "automatisch eingestellt werden,bitte richten ";
strText += "Sie kicker.de manuell als Startseite ein.";
alert(strText);
}
}
//Promitipp
ovToolkit.SubmitPromitippFormLigaChanged = function(form)
{
var name;
var value;
var nameParts;
var strParams;
var strActionOriginal;
strAction = new String(form.action);
strParams = '';
for (i=0; i<form.length; i++){
name = form[i].name;
value = form[i].value;
if (name.length > 0){
nameParts = name.split('$');
if (nameParts.length < 2){
nameParts = name.split('%');
}
name = nameParts[nameParts.length-1];
if (value != null && value.length > 0 && name != 'promitippuser'){
strParams += '/' + name + '/' + value;
}
}
}
window.location.href = strAction + strParams;
}
//F1Manager
ovToolkit.SubmitManagerligaFormLigaChanged = function(form)
{
var name;
var value;
var nameParts;
var strParams;
var strActionOriginal;
strAction = new String(form.action);
strParams = '';
for (i=0; i<form.length; i++){
name = form[i].name;
value = form[i].value;
if (name.length > 0){
nameParts = name.split('$');
if (nameParts.length < 2){
nameParts = name.split('%');
}
name = nameParts[nameParts.length-1];
if (value != null && value.length > 0 && name != 'manid'){
strParams += '/' + name + '/' + value;
}
}
}
window.location.href = strAction + strParams;
}
ovToolkit.SubmitRankingAuswahl = function(form)
{
var name;
var value;
var nameParts;
var strParams;
var strActionOriginal;
strAction = new String(form.action);
strParams = '';
for (i=0; i<form.length; i++){
name = form[i].name;
value = form[i].value;
if (name.length > 0){
nameParts = name.split('$');
if (nameParts.length < 2){
nameParts = name.split('%');
}
name = nameParts[nameParts.length-1];
}
if (value == null){
value = form[i].options[form[i].selectedIndex].value;
}
if (value != null && value.length > 0 && name != null && name.length > 0){
strParams += '/' + name + '/' + ovToolkit.encode_utf8(value);
}
}
window.location.href = strAction + strParams;
}
ovToolkit.AppendPromitippParamsToActionString = function(form)
{
var name;
var value;
var nameParts;
var strParams;
var strActionOriginal;
strAction = new String(form.action);
strParams = '';
for (i=0; i<form.length; i++){
name = form[i].name;
value = form[i].value;
if (name.length > 0){
nameParts = name.split('$');
if (nameParts.length < 2){
nameParts = name.split('%');
}
name = nameParts[nameParts.length-1];
}
if (value != null && value.length > 0){
strParams += '/' + name + '/' + value;
}
}
return strAction + strParams;
}
//RSS
ovToolkit.SubmitRSSNews = function(form,ctrlName,ctrlName2)
{
var name;
var value;
var nameParts;
var rssDomain;
var rssIdentifier;
var strAction;
strAction = new String(form.action);
strParams = '';
for (i=0; i<form.length; i++){
name = form[i].name;
value = form[i].value;
if (name.length > 0){
nameParts = name.split('$');
if (nameParts.length < 2){
nameParts = name.split('%');
}
name = nameParts[nameParts.length-1];
if (name == 'rsf_feed_type'){
rssDomain = 'http://rss.kicker.de/' + value;
}
else if ((name == ctrlName || name == ctrlName2) && value != "0") {
rssIdentifier = value;
if (name == 'mobileNews') {
rssDomain = 'http://rss.kicker.de/mobile/news';
}
else if (name == 'mobileTeam') {
rssDomain = 'http://rss.kicker.de/mobile/team';
}
}
}
}
if (rssDomain.length > 0 && rssIdentifier.length > 0) {
window.location.href = rssDomain + '/' + rssIdentifier;
}
else {
window.location.href = strAction;
}
}
ovToolkit.RefreshRSSTooltip = function(kicker_url)
{
var ctrl_feed = document.getElementById('rsstooltip_auflistung_rssfeed');
var ctrl_google = document.getElementById('rsstooltip_auflistung_google');
var ctrl_yahoo = document.getElementById('rsstooltip_auflistung_yahoo');
var ctrl_msn = document.getElementById('rsstooltip_auflistung_msn');
var ctrl_newsgator = document.getElementById('rsstooltip_auflistung_newsgator');
var ctrl_netvibes = document.getElementById('rsstooltip_auflistung_netvibes');
var ctrl_pageflakes = document.getElementById('rsstooltip_auflistung_pageflakes');
var ctrl_rojo = document.getElementById('rsstooltip_auflistung_rojo');
ctrl_feed.href = kicker_url;
ctrl_google.href = 'http://fusion.google.com/add?feedurl=' + kicker_url;
ctrl_yahoo.href = 'http://add.my.yahoo.com/rss?url=' + kicker_url;
ctrl_msn.href = 'http://my.msn.com/addtomymsn.armx?id=rss&amp;ut=' + kicker_url;
ctrl_newsgator.href = 'http://www.newsgator.com/ngs/subscriber/subext.aspx?url=' + kicker_url;
ctrl_netvibes.href = 'http://www.netvibes.com/subscribe.php?url=' + kicker_url;
ctrl_pageflakes.href = 'http://www.pageflakes.com/subscribe.aspx?url=' + kicker_url;
ctrl_rojo.href = 'http://www.rojo.com/add-subscription?resource=' + kicker_url;
}
//Statistik
ovToolkit.SubmitForm = function(form)
{
window.location.href = ovToolkit.AppendFormParamsToActionString(form,0,0,'');
}
ovToolkit.SubmitPromitipp = function(form)
{
window.location.href = ovToolkit.AppendPromitippParamsToActionString(form);
}
ovToolkit.AppendFormParamsToActionString = function(form,isspielplan,setturniergruppeZero,IgnoreName)
{
var name;
var value;
var nameParts;
var strParams;
var strActionOriginal;
var turniergruppe;
strAction = new String(form.action);
strParams = '';
for (i=0; i<form.length; i++){
name = form[i].name;
if (form[i].type != 'checkbox'){
value = form[i].value;
}
else {
value = form[i].checked;
}
if (name.length > 0){
if (form[i].type != 'radio' || form[i].checked){
nameParts = name.split('$');
if (nameParts.length < 2){
nameParts = name.split('%');
}
name = nameParts[nameParts.length-1];
}
}
if (name == 'tabelle') {
if (value.length > 0 || value > 0) {
if (strAction.indexOf("/spieltag",0) >= 0){
if (value == 4){
strAction = strAction.substr(0,strAction.indexOf("/spieltag",0) + 9) + "/ergebnisgrid";
}
else {
strAction = strAction.substr(0,strAction.indexOf("/spieltag",0) + 9) + "/tabelle";
}
}
}
}
else if (name == 'liga') {
if (value == "1"){
strAction = strAction.replace("/2bundesliga","/bundesliga");
}
else if (value == "2") {
strAction = strAction.replace("/bundesliga","/2bundesliga");
}
}
else if (name == 'selliga') {
name = 'liga';
if (value == 1803 || value == 1805 || value == 1806) {
//NHL,NFL,NBA
strAction = strAction.replace("_spieltag","_spielplan");
strAction = strAction.replace("naviindex/0","naviindex/1");
strAction = strAction.replace("NaviIndex/0","NaviIndex/1");
}
else {
strAction = strAction.replace("_spielplan","_spieltag");
strAction = strAction.replace("naviindex/1","naviindex/0");
strAction = strAction.replace("NaviIndex/1","NaviIndex/0");
}
}
else if (name == 'turniergruppe' && value != null && value > 0) {
strAction = strAction.replace("/plan","/runde");
if (strAction.toLowerCase().indexOf("naviindex") < 0) {
strAction = strAction + "/naviindex/1";
}
turniergruppe = value;
}
else if (isspielplan == 1 && name == 'spieltag' && value != null && value > 0) {
strAction = strAction.replace("/plan","/runde");
if (strAction.toLowerCase().indexOf("naviindex") < 0) {
strAction = strAction + "/naviindex/1";
}
}
if (value == null){
value = form[i].options[form[i].selectedIndex].value;
}
if (value != null && value.length > 0 && name != null && name.length > 0){
if ((IgnoreName == 'tennis_jahr' && (name == 'modus' || name == 'spieltag' || name == 'nationen' || name == 'turniergruppe')) ||
(IgnoreName == 'tennis_modus' && (name == 'spieltag' || name == 'turniergruppe')) ||
(IgnoreName == 'tennis_runde' && (name == 'nationen' || name == 'turniergruppe')) ||
(IgnoreName == 'tennis_geschlecht' && name == 'turnierart') ||
(IgnoreName == 'ligenligen' && (name == 'saison' || name == 'spieltag'|| name == 'naviindex'|| name == 'object')))
{
//Ignore Parameter,don't add Parameter!
}
else {
if (form[i].type != 'radio' || form[i].checked){
strParams += '/' + name + '/' + value;
}
}
}
}
var result;
result = strAction + strParams;
if (setturniergruppeZero){
result = result.replace("/turniergruppe/" + turniergruppe,"/turniergruppe/0");
}
return result;
}
//Suche
ovToolkit.checkSuche = function(myform)
{
//	for (i = 0; i < myform.length; i++){
//		if (myform[i].type == 'radio' && myform[i].checked == true) {
//			if (myform[i].value == 'kicker') {
myform.submit();
//			}
//			else {
//				var suchbegriff;
//
//				suchbegriff = encode_utf8(myform["q"].value);
//				window.open('http://de.ask.com/ar?q=' + suchbegriff + '&qsrc=999&siteid=3006&l=dis','askcom','menubar=1,location=1,toolbar=1,scrollbars=1,resizable=1');
//			}
//			break;
//		}
//	}
return;
}
ovToolkit.checkSucheBtn = function()
{
var suchbegriff;
suchbegriff = ovToolkit.encode_utf8(document.getElementById("inputsuche").value);
window.open('http://de.ask.com/ar?q=' + suchbegriff + '&qsrc=999&siteid=3006&l=dis','askcom','menubar=1,location=1,toolbar=1,scrollbars=1,resizable=1');
return;
}
ovToolkit.encode_utf8 = function(rohtext)
{
var utftext = "";
rohtext = rohtext.replace(/\r\n/g,"\n");
for(var n=0; n<rohtext.length; n++) {
if (rohtext.charAt(n) == "\u00E4") { //ae
utftext += "%C3%A4";
}
else if (rohtext.charAt(n) == "\u00f6") { //oe
utftext += "%C3%B6";
}
else if (rohtext.charAt(n) == "\u00fc") { //ue
utftext += "%C3%BC";
}
else if (rohtext.charAt(n) == "\u00df") { //ss
utftext += "%C3%9F";
}
else if (rohtext.charAt(n) == "\u00c4") { //Ae
utftext += "%C3%84";
}
else if (rohtext.charAt(n) == "\u00d6") { //Oe
utftext += "%C3%96";
}
else if (rohtext.charAt(n) == "\u00dc") { //Ue
utftext += "%C3%9C";
}
else if (rohtext.charAt(n) == "\u00f3") { //o-apostroph
utftext += "%C3%B3";
}
else {
utftext += rohtext.charAt(n);
}
}
return utftext;
}
ovToolkit.checkkickerSuche = function(form,suchwort,suchevon,suchebis,nurtitel)
{
var nurtitel;
var maxtreffer;
var params = "";
for (i=0; i<form.length; i++){
name = form[i].name;
if (name.length > 0){
nameParts = name.split('$');
if (nameParts.length < 2){
nameParts = name.split('%');
}
name = nameParts[nameParts.length-1];
}
if (name == 'maxtreffer') {
maxtreffer = form[i].value;
}
if (name == 'nurtitel')
nurtitel = form[i].checked;
}
if (suchwort.value.length > 0) {
params = '/q/' + suchwort.value;
}
if (suchevon.value.length > 0) {
params = params + '/suchevon/' + suchevon.value;
}
if (suchebis.value.length > 0) {
params = params + '/suchebis/' + suchebis.value;
}
if (nurtitel == true) {
params = params + '/nurtitel/1';
}
else {
params = params + '/nurtitel/0';
}
params = params + '/maxtreffer/' + maxtreffer;
window.location.href = form.action + params;
return;
}
ovToolkit.keyCheckEnter = function(eventObj,myform)
{
var keyCode;
if (document.all) {
keyCode = eventObj.keyCode;
}
else {
keyCode = eventObj.which;
}
if (keyCode == 13) {
ovToolkit.checkSuche(myform);
return false;
}
}
//Community
ovToolkit.openCard = function(username)
{
window.location.href = "http://community.kicker.de/community/card/"+username+"/";
}
ovToolkit.openCommunityCard = function(username)
{
window.location.href = "http://community.kicker.de/community/card/"+username+"/";
}
ovToolkit.openPicFlyout = function(picZoomType,objectID,saison,virtualPath,verein)
{
ovToolkit.openPicFlyoutExt(picZoomType,objectID,saison,0,virtualPath,verein);
}
ovToolkit.openPicFlyoutExt = function(picZoomType,objectID,saison,liga,virtualPath,verein)
{
var width;
var height;
if (picZoomType == 3){
//Stadion
width=488;
height=459;
}else if (picZoomType == 5 || picZoomType == 6 || picZoomType == 7){
//F1-Strecke
width=620;
height=543;
}else{
width=520;
height=675;
}
var winopts="height="+height+",width="+width+",scrollbars=no,resizable=0,status=0,location=0,toolbar=0";
var strLiga;
var strVerein;
if (liga > 0){
strLiga = '/liga/' + liga;
}else{
strLiga = '';
}
if (verein && verein > 0){
strVerein = '/verein/' + verein;
}else{
strVerein = '';
}
cardWin = window.open(virtualPath + 'piczoom/object/' + objectID + '/picZoomType/' + picZoomType + '/saison/' + saison + strLiga + strVerein,'kicker',winopts);
}
ovToolkit.openSMSHelp = function(rootUrl,SpielID)
{
var url = rootUrl;
url += "/spiel/" + SpielID;
window.open(url,"popup","menubar=0,toolbar=0,scrollbars=1,status=1,resizable=1,height=480,width=480");
return;
}
ovToolkit.openZoom = function(artikelID,picID,picwidth)
{
var width;
var height;
var winopts;
var Wert;
if (parseInt(picwidth) < 401){
width = 430;
height = 430;
}else if (parseInt(picwidth) < 501){
width = 530;
height = 510;
}else if (parseInt(picwidth) < 601){
width = 630;
height = 570;
}else {
width = parseInt(picwidth)+30;
height = parseInt(width*570/630);
}
winopts="height="+height+",width="+width+",scrollbars=no,resizable=0,status=0,location=0,toolbar=0";
cardWin = window.open('/home/artikelzoom/object/' + artikelID + '/picid/' + picID,'kicker',winopts);
}
ovToolkit.openVotingFlyOut = function(votingGUID,width,height)
{
var winopts;
if (width == null) width=440;
if (height == null) height=550;
winopts="height="+height+",width="+width+",scrollbars=yes,resizable=0,status=0,location=0,toolbar=0";
window.open('/home/umfrage/votingguid/' + votingGUID,'kicker',winopts);
return;
}
ovToolkit.playCaptcha = function(uid,mediadburl)
{
var wavURL = mediadburl + "/special/Audio/Audio_Capture_Player.swf?uid=" + uid;
var embedCode = '<EMBED SRC=' + wavURL + ' HIDDEN="true" AUTOSTART="true" >';
document.getElementById("playAudio").innerHTML = "";
document.getElementById("playAudio").innerHTML = embedCode;
document.getElementById("newaccountcaptcha").value="";
document.getElementById("newaccountcaptcha").focus();
}
//Shirt-Promo
var maxShirtImg = 6;
var actShirtImg = 1;
var isFront = 1;
var imgShirtPath = "http://mediadb.kicker.de/special/managerspiel-shirts/";
function nextShirtImg(p) {
if (parseInt(p)==0) {
if (actShirtImg > 1) {
actShirtImg -= 1;
}
else {
actShirtImg = maxShirtImg;
}
}
else {
if (actShirtImg < maxShirtImg) {
actShirtImg += 1;
}
else {
actShirtImg = 1;
}
}
var newpath = imgShirtPath + actShirtImg + ".gif";
var promoslideIMG = document.getElementById('shirtslide');
promoslideIMG.src = newpath;
setShirtURL()
}
function setShirtURL() {
var shirtDefaultURL = document.getElementById('shirtdefaulturl');
var shirtURL1 = document.getElementById('shirturl1');
var shirtURL2 = document.getElementById('shirturl2');
var url = shirtDefaultURL.value;
if (isFront != 1)
url += '&view=2'
url += '&article_id=' + artikelidByPicIndex(actShirtImg);
shirtURL1.href = url;
shirtURL2.href = url;
}
function backsideShirtImg(isLiga) {
var promoslideIMG = document.getElementById('shirtslide');
var revCtrl = document.getElementById('fbmanager_rev');
var ffwCtrl = document.getElementById('fbmanager_ffw');
var backfrontLink = document.getElementById('backfront_link');
var newpath = imgShirtPath;
if (isFront == 1) {
isFront = 0;
if (isLiga == 1) {
newpath += "backside-liga.gif";
}
else {
newpath += "backside-cl-int.gif";
}
revCtrl.style.visibility='hidden';
ffwCtrl.style.visibility='hidden';
backfrontLink.innerHTML = 'Zur&uuml;ck zur Vorderseite';
}
else {
isFront = 1;
newpath += actShirtImg + ".gif";
revCtrl.style.visibility='visible';
ffwCtrl.style.visibility='visible';
backfrontLink.innerHTML = 'Mit deiner Statistik auf der R&uuml;ckseite';
}
promoslideIMG.src = newpath;
setShirtURL()
}
function artikelidByPicIndex(picIndex){
if (picIndex == 1)
return '4872026';
else if (picIndex == 2)
return '4872066';
else if (picIndex == 3)
return '4872082';
else if (picIndex == 4)
return '4872106';
else if (picIndex == 5)
return '4872118';
else if (picIndex == 6)
return '4872123';
else
return '';
}
function ovShowVideoTeaserSmall(id,teaser){
$(id).style.border = "solid 1px red";
$('teasersmall').style.visibility = "visible";
$('teasersmall').innerHTML = teaser;
}
function ovHideVideoTeaserSmall(id){
$(id).style.border = "solid 1px #ffffff";
$('teasersmall').style.visibility = "hidden";
}
//alte Funktionen fuer die Uebergangsphase
function checkHeftbestellung(myform)
{
ovToolkit.checkHeftbestellung(myform)
}
function openZoom(artikelID,picID,picwidth)
{
ovToolkit.openZoom(artikelID,picID,picwidth);
}
function openNewWindow(url)
{
ovToolkit.openNewWindow(url)
}
function openVotingFlyOut(votingGUID,width,height)
{
ovToolkit.openVotingFlyOut(votingGUID,width,height)
}
function makeRemote(url)
{
ovToolkit.makeRemote(url);
}
function openMedionBDF(dest)
{
win=window.open(dest,'Medion',"'menubar=1,toolbar=0,scrollbars=0,status=0,resizable=0,height=400,width=400'");
return;
}
// ---------------------------------------------------------------------------
// Javascript:Konvertierung
// ---------------------------------------------------------------------------
var ovUrl = {
// public method for url encoding
encode : function (string) {
return escape(this._utf8_encode(string));
},// public method for url decoding
decode : function (string) {
return this._utf8_decode(unescape(string));
},// private method for UTF-8 encoding
_utf8_encode : function (string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
},// private method for UTF-8 decoding
_utf8_decode : function (utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while ( i < utftext.length ) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
}else if((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i+1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
}else {
c2 = utftext.charCodeAt(i+1);
c3 = utftext.charCodeAt(i+2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return string;
}
}
var ovUtf8 = {
// public method for url encoding
encode : function (string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
},// public method for url decoding
decode : function (utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while ( i < utftext.length ) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
}else if((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i+1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
}else {
c2 = utftext.charCodeAt(i+1);
c3 = utftext.charCodeAt(i+2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return string;
}
}
// ---------------------------------------------------------------------------
// Javascript:ovAuthentication
// ---------------------------------------------------------------------------
function ovAuthentication() {
this.pageurl = document.URL;
}
var ovAuth = new ovAuthentication();
ovAuth.initQuick = function()
{
if (this.authExists()) {
this.createIdentified ()
} else {
this.createAnonym ()
}
}
ovAuth.createIdentified = function()
{
var strUsername = this.getAuthNickname();
var shortUsername = strUsername;
document.writeln('<div><a class="ovLoginOut" href="' + ovAuth.getRootURL() + '/community/logout/"><b>Community</b> (Logout)</a></div>');
document.writeln('<div><a href="http://community.kicker.de/community/card/">' + shortUsername + '</a></div>')
document.writeln('<div id="newmailnav"></div>');
}
ovAuth.createAnonym = function()
{
document.writeln('<div class="ovLoginBox">');
document.writeln('<form action="' + ovAuth.getRootURL() + '/community/login/" method="post" autocomplete="off">');
document.writeln('<input id="returnurl" value="' + ovAuth.getReturnURL() + '" name="ReturnUrl" type="hidden" />	');
document.writeln('<input class="ovLoginInp" id="nicknameLoginBox" value="Login" name="nickname" onfocus="javascript:ovAuth.clearUsernameTextField();" type="text" />');
document.writeln('<input class="ovLoginInp" id="passwordLoginBox" value="pass" name="password" onfocus="javascript:ovAuth.clearPasswordTextField();" type="password" />');
document.writeln('<br /><a href="' + ovAuth.getRootURL() + '/community/login/registrieren/">Nicht registriert?</a>');
document.writeln('<input name="Submit" title="Anmelden" value="Los" accesskey="l" type="submit" class="btn" />');
document.writeln('<input id="authresponse" name="authresponse" type="hidden" />');
document.writeln('</form>');
document.writeln('</div>');
}
ovAuth.clearUsernameTextField = function()
{
var elm = document.getElementById("nicknameLoginBox");
if (elm.value == "Login")
elm.value = "";
}
ovAuth.clearPasswordTextField = function()
{
var elm = document.getElementById("passwordLoginBox");
if (elm.value == "pass")
elm.value = "";
}
ovAuth.getRootURL = function()
{
var rootURL = "";
var elm = document.getElementById("rootPath");
if (elm!=null)
rootURL = elm.value;
return rootURL;
}
ovAuth.getReturnURL = function()
{
var returnURL = "";//document.URL;
if (document.URL.toLowerCase().indexOf("returnurl")>-1){
returnURL = document.URL.substr(document.URL.toLowerCase().indexOf("returnurl")+10);
returnURL=ovUrl.decode(returnURL);
}
return returnURL;
}
ovAuth.logout = function()
{
window.location.href = ovAuth.getRootURL() + "/community/logout/";
}
ovAuth.createNothing = function()
{
document.writeln('<table width="100%"><tr><td>&nbsp;</td></tr>');
document.writeln('</table>');
}
ovAuth.authExists = function()
{
var cookie = this.getCookie("teilnehmer");
if (cookie != null) {
if (this.getCookieProp("teilnehmer","name") != null) {
return true;
} else {
return false;
}
} else {
return false;
}
}
ovAuth.getAuthNickname = function()
{
if (this.authExists()) {
return this.getCookieProp("teilnehmer","nickname");
}
return "Registrierung";
}
ovAuth.getAuthName = function()
{
if (this.authExists()) {
return this.getCookieProp("teilnehmer","name");
}
return "Registrierung";
}
ovAuth.getCookieProp = function(cName,pName)
{
var cookie = this.getCookie(cName);
var prefix = pName + "=";
var propStart = cookie.indexOf("&" + prefix);
var propEnd;
var propValue;
if (propStart == -1) {
propStart = cookie.indexOf(prefix);
if (propStart != 0) return null;
}
else propStart += 1;
propEnd = cookie.indexOf("&",propStart);
if (propEnd == -1) propEnd = cookie.length;
propValue = cookie.substring(propStart + prefix.length,propEnd);
while (propValue.indexOf ("+")>=0) {
propValue = propValue.replace (/\++/," ");
}
return unescape(propValue);
}
ovAuth.getCookie = function(name)
{
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}
else begin += 2;
var end = document.cookie.indexOf(";",begin);
if (end == -1) end = dc.length;
return unescape(dc.substring(begin + prefix.length,end));
}
// ---------------------------------------------------------------------------
// Javascript:FlashVideo
// ---------------------------------------------------------------------------
var myListener = {};
var kickerPlayer = {};
function updateHTML(elmId,value)
{
document.getElementById(elmId).innerHTML = value;
}
function setytplayerState(newState)
{
updateHTML("playerstate",newState);
}
function onKickerPlayerReady(playerId)
{
kickerPlayer = document.getElementById("flashVideoPlayer");
kickerPlayer.addEventListener("onLoad","myListener.onLoad");
kickerPlayer.addEventListener("onPlay","myListener.onPlay");
kickerPlayer.addEventListener("onPause","myListener.onPause");
kickerPlayer.addEventListener("onComplete","myListener.onComplete");
}
function play()
{
kickerPlayer.playVideo();
}
function pause()
{
kickerPlayer.pauseVideo();
}
myListener.onLoad = function(receivedParamsFromPlayerIfAny)
{
setytplayerState(receivedParamsFromPlayerIfAny);
}
myListener.onPlay = function(receivedParamsFromPlayerIfAny)
{
setytplayerState(receivedParamsFromPlayerIfAny);
}
myListener.onPause = function(receivedParamsFromPlayerIfAny)
{
setytplayerState(receivedParamsFromPlayerIfAny);
}
myListener.onComplete = function(receivedParamsFromPlayerIfAny)
{
setytplayerState(receivedParamsFromPlayerIfAny);
}
function ovCreateKickerPlayer(videoid,category,allowAds,thema,headline,credit,isJunioren,videoLevelId,videoStreamingUrl)
{
var flashvars = '';
var videoPath = ovToolkit.playerVideoPath;
var playlistURL;
var videoPlayer = ovToolkit.playerPopupURL;
var ewtest = (document.URL.indexOf("ewtest")>-1);
if (isJunioren && isJunioren.toString() == "true") {
playlistURL = ovToolkit.playerJuniorenPlaylistURL;
}else{
playlistURL = ovToolkit.playerPlaylistURL;
}
//initialClip -> if not defined the player will use the first clip out of the Playlist
flashvars += 'FlashVars_videoid='+ videoid + '&';
flashvars += 'FlashVars_category='+category + '&';
flashvars += 'FlashVars_allowInitialAds='+allowAds + '&'; //only for the initial-clip'
flashvars += 'FlashVars_thema='+encodeURI(thema) + '&';
flashvars += 'FlashVars_headline='+encodeURI(headline) + '&';
flashvars += 'FlashVars_credit=' + credit + '&';
flashvars += 'FlashVars_videolevelid=' + videoLevelId + '&';
flashvars += 'FlashVars_streamingurl=' + videoStreamingUrl + '&';
flashvars += 'FlashVars_baseURL=http://www.kicker.de&';
flashvars += 'FlashVars_loglevel=LEVEL_NONE&'; //allowed: LEVEL_NONE,LEVEL_DEBUG,LEVEL_INFO
flashvars += 'FlashVars_allowAds=true' + '&';
if (ewtest){
flashvars += 'FlashVars_allowLCAds=false' + '&';
}else{
flashvars += 'FlashVars_allowLCAds=true' + '&';
}
flashvars += 'FlashVars_allowEWAds=true' + '&';
flashvars += 'FlashVars_urls='+playlistURL+'?mode=newest;null;null&';
flashvars += 'FlashVars_playlistUrl='+playlistURL+'?&';
// Statistik
if (isJunioren && isJunioren.toString() == "true") {
flashvars += 'FlashVars_countURL='+escape(ovToolkit.rootURL+'/news/junioren/videocount?id=[ID]&format=[FORMAT]') + '&';
}else{
flashvars += 'FlashVars_countURL='+escape(ovToolkit.rootURL+'/news/videocount?id=[ID]&format=[FORMAT]') + '&';
}
flashvars += 'FlashVars_countFrame=ad_count_frame&';
if (isJunioren && isJunioren.toString() == "true"){
flashvars += 'FlashVars_categories=Alle,Junioren&';
//flashvars += 'FlashVars_showCategory=false&';
}else{
flashvars += 'FlashVars_categories=Alle,News,WM,EM,Dt. Fussball,Int. Fussball,Nationalelf,Formel 1,Mehr Sport' + '&';
//flashvars += 'FlashVars_showCategory=true&';
}
flashvars += 'FlashVars_videoPath='+videoPath + '&';
flashvars += 'FlashVars_lc_networkId=106414' + '&';
flashvars += 'FlashVars_lc_format=Video-Flash-400-400x300' + '&';
flashvars += 'FlashVars_lc_levelId=Kicker_Portal%3AKicker_video' + '&';
flashvars += 'FlashVars_lc_displayRegion=Standartbanner' + '&';
if (ewtest){
//Test
flashvars += 'FlashVars_ew_url=http://ad.de.doubleclick.net/adx/kicker.smartclip/test;sz=400x320;dcmt=text/html;ord=[timestamp]?' + '&';
flashvars += 'FlashVars_ew_overlay_url=http://ad.de.doubleclick.net/adx/kicker.smartclip/test;sz=300x50;dcmt=text/html;ord=[timestamp]?' + '&';
flashvars += 'FlashVars_ew_mid_url=http://ad.de.doubleclick.net/adx/kicker.smartclip/test;sz=400x299;dcmt=text/html;ord=[timestamp]?' + '&';
flashvars += 'FlashVars_ew_post_url=http://ad.de.doubleclick.net/adx/kicker.smartclip/test;sz=400x300;dcmt=text/html;ord=[timestamp]?' + '&';
}else{
//Live
flashvars += 'FlashVars_ew_url=http://ad.de.doubleclick.net/ad/kicker.smartclip/;sz=400x320;dcmt=text/html;ord=[timestamp]?' + '&';
flashvars += 'FlashVars_ew_overlay_url=http://ad.de.doubleclick.net/ad/kicker.smartclip/;sz=300x50;dcmt=text/html;ord=[timestamp]?' + '&';
flashvars += 'FlashVars_ew_mid_url=http://ad.de.doubleclick.net/ad/kicker.smartclip/;sz=400x299;dcmt=text/html;ord=[timestamp]?' + '&';
flashvars += 'FlashVars_ew_post_url=http://ad.de.doubleclick.net/ad/kicker.smartclip/;sz=400x300;dcmt=text/html;ord=[timestamp]?' + '&';
}
//ew params
flashvars += 'FlashVars_midroll_video_length=90' + '&';
flashvars += 'FlashVars_overlayLoadDelay=3000';
var params = {};
params.allowfullscreen = "true";
var attributes = { id: "kickerplayer" };
if(navigator.userAgent.indexOf("iPad")>=0) //|| navigator.userAgent.indexOf("Safari")>=0
{
var html5player = "<div class=\"ovVideoHTML5Wrapper\"><div class=\"ovVideoHTML5Headline\"><span>"+headline+"</span></div>";
html5player += "<video src=\"http://podcast.kicker.de/videocenter/"+videoid+"_996x560_H264_1400.mp4\" width=\"640\" height=\"360\" autoplay=\"true\" controls=\"controls\" >";
//html5player += "<source src=\"http://podcast.kicker.de/videocenter/"+videoid+"_iphone.mp4\" type=\"video/mp4\" />";
html5player += "This browser is not compatible with HTML 5";
html5player += "</video></div>";
document.getElementById('ovPopupPlayer').innerHTML = html5player;
var videoCountUrl = ovToolkit.rootURL+'/news/videocount?id='+videoid+'&format=ipad';
document.getElementById('ad_count_frame').src = videoCountUrl;
}
else if(navigator.userAgent.indexOf("IE")>=0) {
document.getElementById('ovPopupPlayer').innerHTML = '<embed src="'+videoPlayer+'" name="flashVideoPlayer" id="flashVideoPlayer" type="application/x-shockwave-flash" width="909" height="381" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" bgcolor="#000000" menu="false" allowScriptAccess="always" allowFullScreen="true" FlashVars="'+flashvars+'" wmode="opaque"><\/embed>';
}else{
document.getElementById('ovPopupPlayer').innerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="flashVideoPlayer" width="909" height="381">\n<param name="movie" value="' + videoPlayer + '" />\n<param name="quality" value="high" />\n<param name="bgcolor" value="#000000" />\n<param name="menu" value="false" />\n<param name="allowScriptAccess" value="always" />\n<param name="allowFullScreen" value="true" />\n<param name="wmode" value="opaque">\n<param name="FlashVars" value="'+flashvars+'" />\n<embed src="'+videoPlayer+'" name="flashVideoPlayer" type="application/x-shockwave-flash" width="909" height="381" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" bgcolor="#000000" menu="false" allowScriptAccess="always" allowFullScreen="true" FlashVars="'+flashvars+'" wmode="opaque"><\/embed>\n<\/object>';
}
}
// ---------------------------------------------------------------------------
// Javascript:Flash
// ---------------------------------------------------------------------------
var ShockMode = 0;
var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
// flash version
if (plugin && parseInt (plugin.description.substring (plugin.description.indexOf (".") - 1)) >= 6)
{
ShockMode = 1;
}
//for the mac
if (navigator.userAgent.indexOf ("Mac") >= 0 && navigator.userAgent.indexOf ("MSIE") >= 0 && navigator.userAgent.indexOf ("4.5") >= 0)
{
ShockMode = 1;
}
else if (navigator.userAgent && navigator.userAgent.indexOf ("MSIE") >= 0 && navigator.userAgent.indexOf ("Windows") >= 0)
{
document.write ('\<SCRIPT LANGUAGE="VBScript" \>');
document.write ('on error resume next \n');
document.write ('ShockMode = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.6")))\n');
document.write ('<\/SCR' + 'IPT>');
}
function Browser ()
{
this.isIE = false;
this.isNS = false;
this.isOpera = false;
this.isMozilla = false;
this.isWin = false;
this.isMac = false;
this.isLinux = false;
this.version = 0;
this.isFlashed = false;
var requiredFlashVersion = 6;
var maxFlashVersion = 10;
var agent = navigator.userAgent.toLowerCase ();
this.isIE = agent.indexOf ("msie") != -1 && agent.indexOf ("opera") == -1;
this.isNS = (agent.indexOf ("netscape") != -1 || navigator.appName == "Netscape") && agent.indexOf ("opera") == -1;
//in netscape4 "netscape" doesn't appear in navigator.userAgent
this.isOpera = agent.indexOf ("opera") != -1;
this.isMozilla = agent.indexOf ("mozilla") != -1;
this.isKonqueror = agent.indexOf ("konqueror") != -1;
this.isWin = agent.indexOf ("win") != -1;
this.isMac = agent.indexOf ("mac") != -1;
this.isLinux = agent.indexOf ("linux") != -1;
var minor = parseFloat (navigator.appVersion);
if (this.isNS) {
if (minor >= 6) {
this.version = 6;
} else {
this.version = minor;	}
} else if (this.isKonqueror) {
this.version = minor;
} else if (this.isIE) {
if (agent.indexOf ("msie 5") != -1 && minor == 4) {
this.version = 5;
} else {
this.version = minor;
}
} else if (this.isOpera) {
if (agent.indexOf ("opera 2") != -1 || agent.indexOf ("opera/2") != -1) {
this.version = 2;
}
if (agent.indexOf ("opera 3") != -1 || agent.indexOf ("opera/3") != -1) {
this.version = 3;
}
if (agent.indexOf ("opera 4") != -1 || agent.indexOf ("opera/4") != -1) {
this.version = 4;
}
if (agent.indexOf ("opera 5") != -1 || agent.indexOf ("opera/5") != -1) {
this.version = 5;
}
if (agent.indexOf ("opera 6") != -1 || agent.indexOf ("opera/6") != -1) {
this.version = 6;
}
}
if (this.isIE && this.isWin) {
document.write ('<SCR' + 'IPT LANGUAGE="VBScript" \> \n');
document.write ('on error resume next \n');
for (i = requiredFlashVersion; i < maxFlashVersion + 1; i++) {
document.write ('flash' + i + 'Installed = false \n');
document.write ('flash' + i + 'Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.' + i + '"))) \n');
}
document.write ('</SCR' + 'IPT\> \n');
for (i = requiredFlashVersion; i < maxFlashVersion + 1; i++) {
if (eval ("flash" + i + "Installed")) {
this.isFlashed = true;
break;
}
}
} else if (navigator.plugins && navigator.plugins["Shockwave Flash"]) {
var plugin = navigator.plugins["Shockwave Flash"];
var actualVersion = plugin.description.charAt (plugin.description.indexOf (".") - 1);
if (actualVersion == 0){
actualVersion = plugin.description.charAt (plugin.description.indexOf (".") - 2) + actualVersion
}
this.isFlashed = (parseInt(actualVersion) >= requiredFlashVersion);
}
}
var myBrowser = new Browser();
// ---------------------------------------------------------------------------
// Javascript:Anylink
// ---------------------------------------------------------------------------
var disappeardelay=250  //menu disappear speed onMouseout (in miliseconds)
var enableanchorlink=0 //Enable or disable the anchor link when clicked on? (1=e,0=d)
var hidemenu_onclick=1 //hide menu when user clicks within menu? (1=yes,0=no)
var ie5=document.all
var ns6=document.getElementById&&!document.all
function getposOffset(what,offsettype){
var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
var parentEl=what.offsetParent;
while (parentEl!=null){
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;
}
return totaloffset;
}
function showhide(obj,e,visible,hidden){
if (ie5||ns6) {
dropmenuobj.style.left=dropmenuobj.style.top=-500
}
if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover"){
obj.visibility=visible
if (document.getElementById('mid')&&ie5) {
document.getElementById('mid').style.visibility='hidden';
document.getElementById('mid2').style.visibility='hidden';
}
}
else if (e.type=="click") {
obj.visibility=hidden
if (document.getElementById('mid')&&ie5) {
document.getElementById('mid').style.visibility='visible';
document.getElementById('mid2').style.visibility='visible';
}
}
}
function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}
function clearbrowseredge(obj,whichedge){
var edgeoffset=0
if (whichedge=="rightedge"){
var windowedge=ie5 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
}
else{
var windowedge=ie5 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
//if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure)
//edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
}
return edgeoffset
}
function dropdownmenu(obj,e,dropmenuID){
return dropdownmenu2(obj,e,dropmenuID,0,0);
}
function dropdownmenu2(obj,e,dropmenuID,newleft,newright){
if (window.event) event.cancelBubble=true
else if (e.stopPropagation) e.stopPropagation()
if (typeof dropmenuobj!="undefined") {
dropmenuobj.style.visibility="hidden"
}
clearhidemenu()
if (ie5||ns6){
obj.onmouseout=delayhidemenu
dropmenuobj=document.getElementById(dropmenuID)
if (hidemenu_onclick) dropmenuobj.onclick=function(){dropmenuobj.style.visibility='hidden'}
dropmenuobj.onmouseover=clearhidemenu
dropmenuobj.onmouseout=ie5? function(){ dynamichide(event)} : function(event){ dynamichide(event)}
showhide(dropmenuobj.style,e,"visible","hidden");
dropmenuobj.style.position="absolute";
dropmenuobj.x=getposOffset(obj,"left")-parseInt(newleft);
dropmenuobj.y=getposOffset(obj,"top")-parseInt(newright);
dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj,"rightedge")+"px";
dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj,"bottomedge")+obj.offsetHeight+"px";
dropmenuobj.style.zIndex="100";
}
return clickreturnvalue()
}
function dropdownsppinfo(obj,e,dropmenuID,newleft,newtop){
if (window.event) event.cancelBubble=true
else if (e.stopPropagation) e.stopPropagation()
if (typeof dropmenuobj!="undefined") {
//hide previous menu
dropmenuobj.style.visibility="hidden"
}
clearhidemenu()
if (ie5||ns6){
obj.onmouseout=delayhidemenu
dropmenuobj=document.getElementById(dropmenuID)
if (hidemenu_onclick) dropmenuobj.onclick=function(){dropmenuobj.style.visibility='hidden'}
dropmenuobj.onmouseover=clearhidemenu
dropmenuobj.onmouseout=ie5? function(){ dynamichide(event)} : function(event){ dynamichide(event)}
showhide(dropmenuobj.style,e,"visible","hidden")
dropmenuobj.style.left=parseInt(newleft)+"px"
dropmenuobj.style.top=parseInt(newtop)+"px"
}
return clickreturnvalue()
}
function rightmenu(obj,e,dropmenuID){
if (window.event) event.cancelBubble=true
else if (e.stopPropagation) e.stopPropagation()
if (typeof dropmenuobj!="undefined") //hide previous menu
//dropmenuobj.style.visibility="hidden"
clearhidemenu()
if (ie5||ns6){
obj.onmouseout=delayhidemenu
dropmenuobj=document.getElementById(dropmenuID)
if (hidemenu_onclick) dropmenuobj.onclick=function(){dropmenuobj.style.visibility='hidden'}
dropmenuobj.onmouseover=clearhidemenu
dropmenuobj.onmouseout=ie5? function(){ dynamichide(event)} : function(event){ dynamichide(event)}
showhide(dropmenuobj.style,e,"visible","hidden")
dropmenuobj.x=getposOffset(obj,"left")
dropmenuobj.y=getposOffset(obj,"top")
dropmenuobj.style.left="120px"
dropmenuobj.style.top="0px"
}
return clickreturnvalue()
}
function clickreturnvalue(){
if ((ie5||ns6) && !enableanchorlink) return false
else return true
}
function contains_ns6(a,b) {
if (b){
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
}
}
function dynamichide(e){
if (ie5&&!dropmenuobj.contains(e.toElement))
delayhidemenu()
else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget,e.relatedTarget))
delayhidemenu()
}
function delayhidemenu(){
delayhide=setTimeout("dropmenuobj.style.visibility='hidden'",disappeardelay)
if (document.getElementById('mid')&&ie5) {
delayhide2=setTimeout("document.getElementById('mid').style.visibility='visible'",disappeardelay)
delayhide3=setTimeout("document.getElementById('mid2').style.visibility='visible'",disappeardelay)
}
}
function clearhidemenu(){
if (typeof delayhide!="undefined")
clearTimeout(delayhide)
if (typeof delayhide2!="undefined")
clearTimeout(delayhide2)
if (typeof delayhide3!="undefined")
clearTimeout(delayhide3)
}
// ---------------------------------------------------------------------------
// Javascript:Podcast activeX start
// ---------------------------------------------------------------------------
function AC_AddExtension(src,ext)
{
if (src.indexOf('?') != -1)
return src.replace(/\?/,ext+'?');
else
return src + ext;
}
function AC_Generateobj(objAttrs,params,embedAttrs)
{
var str = '<object ';
for (var i in objAttrs)
str += i + '="' + objAttrs[i] + '" ';
str += '>';
for (var i in params)
str += '<param name="' + i + '" value="' + params[i] + '" /> ';
str += '<embed ';
for (var i in embedAttrs)
str += i + '="' + embedAttrs[i] + '" ';
str += ' ></embed></object>';
document.write(str);
}
function AC_FL_RunContent(){
var ret =
AC_GetArgs
(  arguments,".swf","movie","clsid:d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash"
);
AC_Generateobj(ret.objAttrs,ret.params,ret.embedAttrs);
}
function AC_SW_RunContent(){
var ret =
AC_GetArgs
(  arguments,".dcr","src","clsid:166B1BCA-3F9C-11CF-8075-444553540000",null
);
AC_Generateobj(ret.objAttrs,ret.params,ret.embedAttrs);
}
function AC_GetArgs(args,ext,srcParamName,classid,mimeType){
var ret = new Object();
ret.embedAttrs = new Object();
ret.params = new Object();
ret.objAttrs = new Object();
for (var i=0; i < args.length; i=i+2){
var currArg = args[i].toLowerCase();
switch (currArg){
case "classid":
break;
case "pluginspage":
ret.embedAttrs[args[i]] = args[i+1];
break;
case "src":
case "movie":
args[i+1] = AC_AddExtension(args[i+1],ext);
ret.embedAttrs["src"] = args[i+1];
ret.params[srcParamName] = args[i+1];
break;
case "onafterupdate":
case "onbeforeupdate":
case "onblur":
case "oncellchange":
case "onclick":
case "ondblClick":
case "ondrag":
case "ondragend":
case "ondragenter":
case "ondragleave":
case "ondragover":
case "ondrop":
case "onfinish":
case "onfocus":
case "onhelp":
case "onmousedown":
case "onmouseup":
case "onmouseover":
case "onmousemove":
case "onmouseout":
case "onkeypress":
case "onkeydown":
case "onkeyup":
case "onload":
case "onlosecapture":
case "onpropertychange":
case "onreadystatechange":
case "onrowsdelete":
case "onrowenter":
case "onrowexit":
case "onrowsinserted":
case "onstart":
case "onscroll":
case "onbeforeeditfocus":
case "onactivate":
case "onbeforedeactivate":
case "ondeactivate":
case "type":
case "codebase":
ret.objAttrs[args[i]] = args[i+1];
break;
case "width":
case "height":
case "align":
case "vspace":
case "hspace":
case "class":
case "title":
case "accesskey":
case "name":
case "id":
case "tabindex":
ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
break;
default:
ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
}
}
ret.objAttrs["classid"] = classid;
if (mimeType) ret.embedAttrs["type"] = mimeType;
return ret;
}
// ---------------------------------------------------------------------------
// Javascript:Tooltip
// ---------------------------------------------------------------------------
/***********************************************
* Cool DHTML tooltip script II- &copy; Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/
var offsetfromcursorX=12 //Customize x offset of tooltip
var offsetfromcursorY=10 //Customize y offset of tooltip
var offsetdivfrompointerX=10 //Customize x offset of tooltip DIV relative to pointer image
var offsetdivfrompointerY=14 //Customize y offset of tooltip DIV relative to pointer image. Tip: Set it to (height_of_pointer_image-1).
var ie=document.all
var ns6=document.getElementById && !document.all
var enabletip=false
function ietruebody(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}
function ddrivetip(thetext,thewidth,thecolor){
if (ie||ns6)
var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : ""
var pointerobj=document.all? document.all["dhtmlpointer"] : document.getElementById? document.getElementById("dhtmlpointer") : ""
if (ns6||ie){
if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px"
if (typeof thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor
tipobj.innerHTML=thetext
enabletip=true
return false
}
}
function positiontip(e)
{
if (enabletip){
if (ie||ns6)
var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : ""
var pointerobj=document.all? document.all["dhtmlpointer"] : document.getElementById? document.getElementById("dhtmlpointer") : ""
var nondefaultpos=false
var curX=(ns6)?e.pageX : event.clientX+ietruebody().scrollLeft;
var curY=(ns6)?e.pageY : event.clientY+ietruebody().scrollTop;
//Find out how close the mouse is to the corner of the window
var winwidth=ie&&!window.opera? ietruebody().clientWidth : window.innerWidth-20
var winheight=ie&&!window.opera? ietruebody().clientHeight : window.innerHeight-20
var rightedge=ie&&!window.opera? winwidth-event.clientX-offsetfromcursorX : winwidth-e.clientX-offsetfromcursorX
var bottomedge=ie&&!window.opera? winheight-event.clientY-offsetfromcursorY : winheight-e.clientY-offsetfromcursorY
var leftedge=(offsetfromcursorX<0)? offsetfromcursorX*(-1) : -1000
//if the horizontal distance isn't enough to accomodate the width of the context menu
if (rightedge<tipobj.offsetWidth){
//move the horizontal position of the menu to the left by it's width
tipobj.style.left=curX-tipobj.offsetWidth+"px"
nondefaultpos=true
}
else if (curX<leftedge)
tipobj.style.left="5px"
else{
//position the horizontal position of the menu where the mouse is positioned
tipobj.style.left=curX+offsetfromcursorX-offsetdivfrompointerX+"px"
pointerobj.style.left=curX+offsetfromcursorX+"px"
}
//same concept with the vertical position
if (bottomedge<tipobj.offsetHeight){
tipobj.style.top=curY-tipobj.offsetHeight-offsetfromcursorY+"px"
nondefaultpos=true
}
else{
tipobj.style.top=curY+offsetfromcursorY+offsetdivfrompointerY+"px"
pointerobj.style.top=curY+offsetfromcursorY+"px"
}
tipobj.style.visibility="visible"
if (!nondefaultpos)
pointerobj.style.visibility="visible"
else
pointerobj.style.visibility="hidden"
}
}
function hideddrivetip()
{
if (ns6||ie){
if (ie||ns6)
var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : ""
var pointerobj=document.all? document.all["dhtmlpointer"] : document.getElementById? document.getElementById("dhtmlpointer") : ""
enabletip=false
tipobj.style.visibility="hidden"
pointerobj.style.visibility="hidden"
tipobj.style.left="-1000px"
tipobj.style.backgroundColor=''
tipobj.style.width=''
}
}
document.onmousemove=positiontip
/** ----------------------------------------------------------------------------------------------------------------------------------
* SWFObject v1.5.1: Flash Player detection and embed
*
*
*
*
*/
if(typeof deconcept == "undefined") var deconcept = {};
if(typeof deconcept.util == "undefined") deconcept.util = {};
if(typeof deconcept.SWFObjectUtil == "undefined") deconcept.SWFObjectUtil = {};
deconcept.SWFObject = function(swf,id,w,h,ver,c,quality,xiRedirectUrl,redirectUrl,detectKey) {
if (!document.getElementById) { return; }
this.DETECT_KEY = detectKey ? detectKey : 'detectflash';
this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY);
this.params = {};
this.variables = {};
this.attributes = [];
if(swf) { this.setAttribute('swf',swf); }
if(id) { this.setAttribute('id',id); }
if(w) { this.setAttribute('width',w); }
if(h) { this.setAttribute('height',h); }
if(ver) { this.setAttribute('version',new deconcept.PlayerVersion(ver.toString().split("."))); }
this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion();
if (!window.opera && document.all && this.installedVer.major > 7) {
// only add the onunload cleanup if the Flash Player version supports External Interface and we are in IE
// fixes bug in some fp9 versions see http://blog.deconcept.com/2006/07/28/swfobject-143-released/
if (!deconcept.unloadSet) {
deconcept.SWFObjectUtil.prepUnload = function() {
__flash_unloadHandler = function(){};
__flash_savedUnloadHandler = function(){};
window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);
}
window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);
deconcept.unloadSet = true;
}
}
var q = quality ? quality : 'high';
this.addParam('quality',q);
this.setAttribute('useExpressInstall',false);
this.setAttribute('doExpressInstall',false);
var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location;
this.setAttribute('xiRedirectUrl',xir);
this.setAttribute('redirectUrl','');
if(redirectUrl) { this.setAttribute('redirectUrl',redirectUrl); }
}
deconcept.SWFObject.prototype = {
useExpressInstall: function(path) {
this.xiSWFPath = !path ? "expressinstall.swf" : path;
this.setAttribute('useExpressInstall',true);
},setAttribute: function(name,value){
this.attributes[name] = value;
},getAttribute: function(name){
return this.attributes[name] || "";
},addParam: function(name,value){
this.params[name] = value;
},getParams: function(){
return this.params;
},addVariable: function(name,value){
this.variables[name] = value;
},getVariable: function(name){
return this.variables[name] || "";
},getVariables: function(){
return this.variables;
},getVariablePairs: function(){
var variablePairs = [];
var key;
var variables = this.getVariables();
for(key in variables){
variablePairs[variablePairs.length] = key +"="+ variables[key];
}
return variablePairs;
},getSWFHTML: function() {
var swfNode = "";
if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture
if (this.getAttribute("doExpressInstall")) {
this.addVariable("MMplayerType","PlugIn");
this.setAttribute('swf',this.xiSWFPath);
}
swfNode = '<embed type="application/x-shockwave-flash" wmode="transparent" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" style="'+ (this.getAttribute('style') || "") +'"';
swfNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';
var params = this.getParams();
for(var key in params){ swfNode += [key] +'="'+ params[key] +'" '; }
var pairs = this.getVariablePairs().join("&");
if (pairs.length > 0){ swfNode += 'flashvars="'+ pairs +'"'; }
swfNode += '/>';
} else { // PC IE
if (this.getAttribute("doExpressInstall")) {
this.addVariable("MMplayerType","ActiveX");
this.setAttribute('swf',this.xiSWFPath);
}
swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" style="'+ (this.getAttribute('style') || "") +'">';
swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" /> <param name="wmode" value="transparent" />';
var params = this.getParams();
for(var key in params) {
swfNode += '<param name="'+ key +'" value="'+ params[key] +'" /> <param name="wmode" value="transparent" />';
}
var pairs = this.getVariablePairs().join("&");
if(pairs.length > 0) {swfNode += '<param name="flashvars" value="'+ pairs +'" />';}
swfNode += "</object>";
}
return swfNode;
},write: function(elementId){
if(this.getAttribute('useExpressInstall')) {
// check to see if we need to do an express install
var expressInstallReqVer = new deconcept.PlayerVersion([6,0,65]);
if (this.installedVer.versionIsValid(expressInstallReqVer) && !this.installedVer.versionIsValid(this.getAttribute('version'))) {
this.setAttribute('doExpressInstall',true);
this.addVariable("MMredirectURL",escape(this.getAttribute('xiRedirectUrl')));
document.title = document.title.slice(0,47) + " - Flash Player Installation";
this.addVariable("MMdoctitle",document.title);
}
}
if(this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))){
var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;
n.innerHTML = this.getSWFHTML();
return true;
}else{
if(this.getAttribute('redirectUrl') != "") {
document.location.replace(this.getAttribute('redirectUrl'));
}
}
return false;
}
}
/* ---- detection functions ---- */
deconcept.SWFObjectUtil.getPlayerVersion = function(){
var PlayerVersion = new deconcept.PlayerVersion([0,0,0]);
if(navigator.plugins && navigator.mimeTypes.length){
var x = navigator.plugins["Shockwave Flash"];
if(x && x.description) {
PlayerVersion = new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));
}
}else if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0){ // if Windows CE
var axo = 1;
var counter = 3;
while(axo) {
try {
counter++;
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+ counter);
//				document.write("player v: "+ counter);
PlayerVersion = new deconcept.PlayerVersion([counter,0,0]);
} catch (e) {
axo = null;
}
}
} else { // Win IE (non mobile)
// do minor version lookup in IE,but avoid fp6 crashing issues
// see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
try{
var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
}catch(e){
try {
var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
PlayerVersion = new deconcept.PlayerVersion([6,0,21]);
axo.AllowScriptAccess = "always"; // error if player version < 6.0.47 (thanks to Michael Williams @ Adobe for this code)
} catch(e) {
if (PlayerVersion.major == 6) {
return PlayerVersion;
}
}
try {
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
} catch(e) {}
}
if (axo != null) {
PlayerVersion = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
}
}
return PlayerVersion;
}
deconcept.PlayerVersion = function(arrVersion){
this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0;
this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0;
this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0;
}
deconcept.PlayerVersion.prototype.versionIsValid = function(fv){
if(this.major < fv.major) return false;
if(this.major > fv.major) return true;
if(this.minor < fv.minor) return false;
if(this.minor > fv.minor) return true;
if(this.rev < fv.rev) return false;
return true;
}
/* ---- get value of query string param ---- */
deconcept.util = {
getRequestParameter: function(param) {
var q = document.location.search || document.location.hash;
if (param == null) { return q; }
if(q) {
var pairs = q.substring(1).split("&");
for (var i=0; i < pairs.length; i++) {
if (pairs[i].substring(0,pairs[i].indexOf("=")) == param) {
return pairs[i].substring((pairs[i].indexOf("=")+1));
}
}
}
return "";
}
}
/* fix for video streaming bug */
deconcept.SWFObjectUtil.cleanupSWFs = function() {
var objects = document.getElementsByTagName("OBJECT");
for (var i = objects.length - 1; i >= 0; i--) {
objects[i].style.display = 'none';
for (var x in objects[i]) {
if (typeof objects[i][x] == 'function') {
objects[i][x] = function(){};
}
}
}
}
/* add document.getElementById if needed (mobile IE < 5) */
if (!document.getElementById && document.all) { document.getElementById = function(id) { return document.all[id]; }}
/* add some aliases for ease of use/backwards compatibility */
var getQueryParamValue = deconcept.util.getRequestParameter;
var FlashObject = deconcept.SWFObject; // for legacy support
var SWFObject = deconcept.SWFObject;
/*--------------------------------------------------------------------------------------------------*/
function now()
{
var Act = new Date();
return Act;
}
function sleep(seconds,minutes,hours,days,month,years) {
var DelaySeconds = seconds; /* 5 Sekunden Verzoegerung */
var DelayMinutes = minutes; /* 0 Minuten  Verzoegerung */
var DelayHours   = hours; /* 0 Stunden  Verzoegerung */
var DelayDays    = days; /* 0 Tage     Verzoegerung */
var DelayMonths  = month; /* 0 Monate   Verzoegerung */
var DelayYears   = years; /* 0 Jahre    Verzoegerung */
var ActTime   = new Date();
var Seconds   = ActTime.getSeconds();
var Minutes   = ActTime.getMinutes();
var Hours     = ActTime.getHours();
var Days      = ActTime.getDate();
var Months    = ActTime.getMonth();
var Years     = ActTime.getYear();
var FinalTime = ActTime;
if ((60 - Seconds) < DelaySeconds) {
Seconds = Seconds + DelaySeconds - 60;
DelayMinutes = DelayMinutes + 1;
}
else {
Seconds = Seconds + DelaySeconds;
}
if ((60 - Minutes) < DelayMinutes) {
Minutes = Minutes + DelayMinutes - 60;
DelayHours = DelayHours + 1;
}
else {
DelayMinutes = Minutes + DelayMinutes;
}
if ((24 - Hours) < DelayHours) {
Hours = Hours + DelayHours - 24;
DelayDays = DelayDays + 1;
}
else {
DelayHours = Hours + DelayHours;
}
switch (Months) {
case 0,2,4,6,7,9,11:
if ((31 - Days) < DelayDays) {
Days = Days + DelayDays - 31;
DelayMonths = DelayMonths + 1;
}
else {
DelayDays = Days + DelayDays;
}
break;
case 3,5,8,10:
if ((30 - Days) < DelayDays) {
Days = Days + DelayDays - 30;
DelayMonths = DelayMonths + 1;
}
else {
DelayDays = Days + DelayDays;
}
break;
case 1:
if ((Year % 400) == 0) {
if ((29 - Days) < DelayDays) {
Days = Days + DelayDays - 29;
DelayMonths = DelayMonths + 1;
}
else {
DelayDays = Days + DelayDays;
}
}
else {
if (((Year % 100) == 0) ((Year % 4) != 0)) {
if ((28 - Days) < DelayDays) {
Days = Days + DelayDays - 28;
DelayMonths = DelayMonths + 1;
}
else {
DelayDays = Days + DelayDays;
}
}
else {
if ((29 - Days) < DelayDays) {
Days = Days + DelayDays - 29;
DelayMonths = DelayMonths + 1;
}
else {
DelayDays = Days + DelayDays;
}
}
}
break;
}
if ((11 - Months) < DelayMonths) {
Months = Months + DelayMonths - 24;
DelayYears = DelayYears + 1;
}
else {
DelayMonths = Months + DelayMonths;
}
Years = Years + DelayYears;
FinalTime.setSeconds(Seconds);
FinalTime.setMinutes(Minutes);
FinalTime.setHours(Hours);
FinalTime.setDate(Days);
FinalTime.setMonth(Months);
FinalTime.setYear(Years);
while (now() < FinalTime) {
}
}
function ovSlideDownCloseOpenItemsBefore(index,controlname,classPrefix) {
//	var i = 0;
//	var link = $('a_'+controlname+0);
//
//	while (link) {
//		if (i != index) {
//			if (link.className.toLowerCase().indexOf("div") > -1) {
//				link = $('div_'+controlname+i);
//				if (link) {
//					if (link.className == 'auf'+classPrefix) {
//						Effect.toggle('sld_'+controlname+i,'blind',{duration: 0.5});
//						link.className = 'zu'+classPrefix;
//					}
//				}
//			}
//			else {
//				if (link.className == 'auf'+classPrefix) {
//					Effect.toggle('sld_'+controlname+i,'blind',{duration: 0.5});
//					link.className = 'zu'+classPrefix;
//				}
//			}
//		}
//
//		i = i + 1;
//		link = $('a_'+controlname+i);
//    }
ovSlideDown(index,controlname,classPrefix);
}
function ovSlideDownTable(index,controlname,container,urlres)
{
var link = $(controlname+index);
var linkcontainer = $(container+index);
var td = $('td_liga_'+index);
var separator = $('sep_'+index);
var img =  $('directionimg_'+index);
if (link)
{
// Effect.toggle(container+index,'slide',{delay: 0.0});
//	if (navigator.appName.indexOf('Microsoft') == -1)
//    {
Effect.toggle(container+index,'blind',{duration: 0.5});
//    }
if(linkcontainer.style.display == 'none')
{
//	  if (navigator.appName.indexOf('Microsoft') != -1)
//	  {
//	      $(container+index).show();
//	  }
if(separator)
{
separator.style.borderBottomColor = "#000000";
}
img.src = urlres + "580-ic-swing-up.png";
}
else
{
//	   if (navigator.appName.indexOf('Microsoft') != -1)
//	  {
//	  $(container+index).hide();
//	  }
if(separator)
{
separator.style.borderBottomColor = "#e7e7e7";
}
img.src = urlres + "580-ic-swing-down.png";
}
}
}
function ovSlideDown(index,controlname,classPrefix) {
var link = $('a_'+controlname+index);
if (link) {
Effect.toggle(controlname+index,'blind',{duration: 0.5});
if (link.className.toLowerCase().indexOf("div") > -1) {
link = $('div_'+controlname+index);
if (link) {
if (link.className == 'auf'+classPrefix)
link.className = 'zu'+classPrefix;
else
link.className = 'auf'+classPrefix;
}
}
else {
if (link.className == 'auf'+classPrefix)
link.className = 'zu'+classPrefix;
else
link.className = 'auf'+classPrefix;
}
}
}
function ShowHideList(listID) {
var list = $(listID);
if (list) {
if (list.style.display == 'none') {
ovAjax.ShowElem(listID);
list.setAttribute('visible',"1");
var dl = list.getElementsByTagName('DL')[0];
if (dl!="undefined"){
if(dl.offsetHeight>'285'){
dl.style.height = '285px';
if (navigator.userAgent.indexOf("MSIE 6.0")!=-1){
dl.style.width = '125px';}
}
}
}
else {
ovAjax.HideElem(listID);
list.setAttribute('visible',"0");
}
}
}
function ShowHideList2(elem,listID) {
var list = $(listID);
if (list) {
list.style.left=getposOffset(elem,"left");//(elem.offsetLeft;
if (list.style.display == 'none') {
ovAjax.ShowElem(listID);
}
else {
ovAjax.HideElem(listID);
}
}
}
function HideList(listID) {
var list = $(listID);
if (list) {
ovAjax.HideElem(listID);
}
}
function debugddl(text)
{
//$('Anzsteuerung1').innerHTML += text + "<br>";
}
var selectTimer;
var selectedSelect;
function SelectOutList(listID)
{
return;
if (navigator.userAgent.indexOf("MSIE 6.0")!=-1){return;}
var select = $(listID);
if(select.getAttribute('visible') == '1'){
selectedSelect = select;
//		var fils = select.childNodes;
//		for(var i = 0; i < fils.length; i++){
//	   		if(fils[i].nodeName=='DL' || fils[i].nodeName=='DT'){
//				fils[i].onmouseover = dontCloseSelect;
//			}
//		}
selectTimer = setTimeout('CloseSelect()',500);
}
}
function CloseSelect()
{return;
if (navigator.userAgent.indexOf("MSIE 6.0")!=-1){return;}
var select = selectedSelect;
select.style.visibility = 'hidden';
select.style.display = 'none';
select.setAttribute('visible',"0");
//	var fils = select.childNodes;
//	for(var i = 0; i < fils.length; i++){
//		if(fils[i].nodeName=='DL'){
//			fils[i].style.visibility = 'hidden';
//			fils[i].style.display = 'none';
//			//fils[i].style.height = '1px';
//			fils[i].onmouseover = '';
//		}else if(fils[i].nodeName=='DT'){
//			fils[i].onmouseover = '';
//		}
//	}
select.setAttribute('visible',"0");
}
function dontCloseSelect()
{return;
if (navigator.userAgent.indexOf("MSIE 6.0")!=-1){return;}
clearTimeout(selectTimer);
}
//------------------------------------------------------------------------------------------
//Slider Zusatzfunktionen
//------------------------------------------------------------------------------------------
function SetDefaultValues(boxLeft,sliderLeft) {
if (parseInt(sliderLeft) > 461) {
var mySlider = $('myslider');
mySlider.style.left = 461 + 'px';
}
box.setStyle({ left: boxLeft + 'px' });
}
function MoveRight(moveThis) {
var myBox = $('slidcont');
var mySlider = $('myslider');
var newleft = parseInt(myBox.style.left) - moveThis;
if (newleft < -boxwidth) {
newleft = -boxwidth;
}
var sliderPos = parseInt(parseInt(newleft) / parseInt(boxwidth) * -465);
if (parseInt(sliderPos) > 461) {
sliderPos = 461;
}
myBox.setStyle({ left: newleft + 'px' });
mySlider.style.left = parseInt(sliderPos) + 'px';
}
function MoveLeft(moveThis) {
var myBox = $('slidcont');
var mySlider = $('myslider');
var newleft = parseInt(myBox.style.left) + moveThis;
if (newleft > 0) {
newleft = 0;
}
myBox.setStyle({ left: newleft + 'px' });
mySlider.style.left = parseInt(parseInt(newleft) / parseInt(boxwidth) * -465) + 'px';
}
function MoveLeft_Vereinsbilanz(moveThis) {
MoveLeft(moveThis);
saisonIndex++;
ovSlideChangeVereinsBilanz(saisonIndex,vrnID);
}
function SlideshowMoveRight(moveThis) {
var myBox = $('slidcont');
var mySlider = $('myslider');
var newleft = parseInt(myBox.style.left) - moveThis;
if (newleft < -boxwidth) {
newleft = -boxwidth;
}
var sliderPos = parseInt(parseInt(newleft) / parseInt(boxwidth) * -841);
if (parseInt(sliderPos) > 806) {
sliderPos = 806;
}
myBox.setStyle({ left: newleft + 'px' });
mySlider.style.left = parseInt(sliderPos) + 'px';
}
function SlideshowMoveLeft(moveThis) {
var myBox = $('slidcont');
var mySlider = $('myslider');
var newleft = parseInt(myBox.style.left) + moveThis;
if (newleft > 0) {
newleft = 0;
}
myBox.setStyle({ left: newleft + 'px' });
mySlider.style.left = parseInt(parseInt(newleft) / parseInt(boxwidth) * -841) + 'px';
}
//------------------------------------------------------------------------------------------
//Page-Scrolling
//------------------------------------------------------------------------------------------
//Event.observe(window,'load',function() {
//    $$("a[href^=#ov]:not([href=#])").each(function(element) {
//        $(element).observe("click",function(event){
//            new Effect.ScrollTo(this.hash.substr(1));
//            Event.stop(event);
//        });
//    })
//});
//------------------------------------------------------------------------------------------
//Shadowbox-IVW-Aufruf
//------------------------------------------------------------------------------------------
Event.observe(window,'load',function() {
if(document.URL.indexOf('startseite.html')==-1 && document.URL.indexOf('.html')>-1){
$('ovContent').select('[rel^=shadowbox]').each(function(element) {
$(element).observe('click',function(event){
ovAjax.SetIVW('');
});
})
}
});
//------------------------------------------------------------------------------------------
//DropDown-Navi
//------------------------------------------------------------------------------------------
Event.observe(window,'load',function() {
$('ovToolsNaviDD').select('[id^=ovDDNav]').each(function(element) {
$(element).observe('mouseover',function(event){
var element = event.element();
Effect.Queues.get(element.id).invoke('cancel');
new Effect.Morph(element.id,{style:'height:79px;',duration:0.3,queue:{scope:element.id}});
});
$(element).observe('mouseout',function(event){
var element = event.element();
Effect.Queues.get(element.id).invoke('cancel');
new Effect.Morph(element.id,{style:'height:12px;',duration:0.3,queue:{scope:element.id}});
});
})
});
// ---------------------------------------------------------------------------
// Javascript:ovAjax
// ---------------------------------------------------------------------------
function ovAjaxObject()
{
this.isStage=(document.URL.indexOf("stage")>-1);
this.isLive=(document.URL.indexOf("kicker.de")>-1);
this.isMSNStage=(document.URL.indexOf("stagemsn")>-1);
this.isMSNLive=(document.URL.indexOf("sport.msn.de")>-1);
this.isKicker=true;
this.isMSN=false;
this.hostName="http://"+window.location.hostname;
this.rootURL="";
this.home="";
this.shopHome="https://shop.kicker.de/kicker";
this.hasAjax=Ajax.getTransport();
this.IVWPage="";
this.IVWURL="http://kicker.ivwbox.de/cgi-bin/ivw/CP/";
this.IVWDefault="http://kicker.ivwbox.de/cgi-bin/ivw/CP/2000;fu_kicker_news";
this.mediadburl="http://mediadb.kicker.de";
}
var ovAjax=new ovAjaxObject();
ovAjax.RefreshWerbung=function()
{
if ($('tag_IM_Web_super')) {
var newSrc = $('tag_IM_Web_super').src;
if (newSrc.indexOf('misc=')>-1) {
newSrc = newSrc.substring(0,newSrc.indexOf('misc=')) + 'misc='+new Date().getTime();
$('tag_IM_Web_super').src = newSrc;
}
}
}
ovAjax.SetIVW=function(IVWCode)
{
ovAjax.RefreshWerbung();
if (ovAjax.isMSN)
return;
var ivw;
try{ivw=IVW;}
catch (e) {ivw='undefined';}
if (ivw!='undefined')
ovAjax.IVWPage=ivw;
var ovIVW=$('ovIVW');
if (IVWCode!="")
ovIVW.src=ovAjax.IVWURL+IVWCode+"?d="+(Math.random()*100000);
else if (IVWCode=="" && ovAjax.IVWPage=="")
ovIVW.src=ovAjax.IVWDefault+"?d="+(Math.random()*100000);
else
ovIVW.src=ovAjax.IVWPage+"?d="+(Math.random()*100000);
}
ovAjax.SetIVWURL=function(IVWURL,IVWCode)
{
var ovIVW=$('ovIVW');
var src=IVWURL+IVWCode
if (src.indexOf("?")>-1){
ovIVW.src=src+"&d="+(Math.random()*100000);
}else{
ovIVW.src=src+"?d="+(Math.random()*100000);
}
}
ovAjax.SetReloadIcon=function(elem)
{
if ($(elem)) {
$(elem).innerHTML+='<div class="ajaxreload"><img src="'+ovAjax.mediadburl+'/library/image/ic-ajax-reload-m.gif" alt=""/><\/div>';
}
}
ovAjax.ShowElem=function(elem)
{
if ($(elem)) {
$(elem).style.display='block';
$(elem).style.visibility='visible';
}
}
ovAjax.HideElem=function(elem)
{
if ($(elem)) {
$(elem).style.display='none';
$(elem).style.visibility='hidden';
}
}
ovAjax.DoNothing=function()
{}
// ---------------------------------------------------------------------------
//Javascript:Ajax-Box
// ---------------------------------------------------------------------------
function ovAmateurLigaAdd2Merkzettel(ligaID)
{
ovAjax.SetReloadIcon('amateurmerkzettel_content');
var myAjax=new Ajax.Updater('amateurmerkzettel_content',ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=amateurligenmerkzettel&addligaid='+ligaID,{method:'get',evalScripts:true});
}
function ovAmateurLigaRemoveFromMerkzettel(ligaID)
{
ovAjax.SetReloadIcon('amateurmerkzettel_content');
var myAjax=new Ajax.Updater('amateurmerkzettel_content',ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=amateurligenmerkzettel&removeligaid='+ligaID,{method:'get',evalScripts:true});
}
function ovAmateurKlasseChanged(index,boxID,ajaxControlName)
{
var forcedQueryString;
var dl = $('dl_klasse');
var array = dl.getElementsByTagName('dt');
for (i=0; i<array.length; i++){
if (array[i].id == 'dt_klasse_'+index) {
array[i].className = 'sel_ligenauswahl';
}
else {
array[i].className = '';
}
}
forcedQueryString = 'auswahl='+$('auswahlid').value + '&verbandland='+$('verbandlandid').value + '&klasse='+index;
var boxIDArray = boxID.split('_');
ovAjax.SetReloadIcon(boxID);
var myAjax=new Ajax.Updater(boxID,ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype='+ajaxControlName+'&boxID='+boxIDArray[0]+'&'+ovAddForcedQueryStringParams(queryString,"&"+forcedQueryString),{method:'get',evalScripts:true });
}
function ovAmateurVerbandLandChanged(index,boxIDs,ajaxControlNames)
{
var forcedQueryString;
var boxIDArray = boxIDs.split(',');
var ajaxControlNameArray = ajaxControlNames.split(',');
$('verbandlandid').value = index;
var dl = $('dl_verbandland');
var array = dl.getElementsByTagName('dt');
for (i=0; i<array.length; i++){
if (array[i].id == 'dt_verbandland_'+index) {
array[i].className = 'sel_ligenauswahl';
}
else {
array[i].className = '';
}
}
forcedQueryString ='auswahl='+$('auswahlid').value + '&verbandland='+index;
var boxIDSubArray1 = boxIDArray[0].split('_');
ovAjax.SetReloadIcon(boxIDArray[0]);
var myAjax=new Ajax.Updater(boxIDArray[0],ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype='+ajaxControlNameArray[0]+'&boxID='+boxIDSubArray1[0]+'&'+ovAddForcedQueryStringParams(queryString,"&"+forcedQueryString),{method:'get',evalScripts:true });
forcedQueryString = 'auswahl='+$('auswahlid').value + '&verbandland='+index+'&klasse=-1';
var boxIDSubArray2 = boxIDArray[1].split('_');
ovAjax.SetReloadIcon(boxIDArray[1]);
var myAjax=new Ajax.Updater(boxIDArray[1],ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype='+ajaxControlNameArray[1]+'&boxID='+boxIDSubArray2[0]+'&'+ovAddForcedQueryStringParams(queryString,"&"+forcedQueryString),{method:'get',evalScripts:true });
}
function ovAmateurAuswahlChanged(index,boxIDs,ajaxControlNames)
{
var forcedQueryString;
var boxIDArray = boxIDs.split(',');
var ajaxControlNameArray = ajaxControlNames.split(',');
$('auswahlid').value = index;
$('verbandlandid').value = -1;
if (index == 2) {
ovAjax.ShowElem('verband_not_sel');
ovAjax.HideElem('bundesland_not_sel');
ovAjax.ShowElem('hierarchie_not_sel');
ovAjax.HideElem('verband_sel');
ovAjax.ShowElem('bundesland_sel');
ovAjax.HideElem('hierarchie_sel');
}
else if (index == 3) {
ovAjax.ShowElem('verband_not_sel');
ovAjax.ShowElem('bundesland_not_sel');
ovAjax.HideElem('hierarchie_not_sel');
ovAjax.HideElem('verband_sel');
ovAjax.HideElem('bundesland_sel');
ovAjax.ShowElem('hierarchie_sel');
}
else {
ovAjax.HideElem('verband_not_sel');
ovAjax.ShowElem('bundesland_not_sel');
ovAjax.ShowElem('hierarchie_not_sel');
ovAjax.ShowElem('verband_sel');
ovAjax.HideElem('bundesland_sel');
ovAjax.HideElem('hierarchie_sel');
}
forcedQueryString = 'auswahl='+index;
var boxIDSubArray1 = boxIDArray[0].split('_');
ovAjax.SetReloadIcon(boxIDArray[0]);
var myAjax=new Ajax.Updater(boxIDArray[0],ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype='+ajaxControlNameArray[0]+'&boxID='+boxIDSubArray1[0]+'&'+ovAddForcedQueryStringParams(queryString,"&"+forcedQueryString),{method:'get',evalScripts:true });
forcedQueryString = 'auswahl='+index+'&verbandland=-1';
var boxIDSubArray2 = boxIDArray[1].split('_');
ovAjax.SetReloadIcon(boxIDArray[1]);
var myAjax=new Ajax.Updater(boxIDArray[1],ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype='+ajaxControlNameArray[1]+'&boxID='+boxIDSubArray2[0]+'&'+ovAddForcedQueryStringParams(queryString,"&"+forcedQueryString),{method:'get',evalScripts:true });
forcedQueryString = 'auswahl='+index+'&verbandland=-1&klasse=-1';
var boxIDSubArray3 = boxIDArray[2].split('_');
ovAjax.SetReloadIcon(boxIDArray[2]);
var myAjax=new Ajax.Updater(boxIDArray[2],ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype='+ajaxControlNameArray[2]+'&boxID='+boxIDSubArray3[0]+'&'+ovAddForcedQueryStringParams(queryString,"&"+forcedQueryString),{method:'get',evalScripts:true });
}
function ovChangeSuchebegriff()
{
if ($('typeVerein').checked) {
$('suchbegriff').value = "Vereinsname";
}
else if ($('typeLiga').checked) {
$('suchbegriff').value = "Ligenname";
}
}
function ovLigaVereinChanged()
{
$('VereinLigaHasChanged').value = 'aaa';
}
function ovClearSuchTextField(ctrlname)
{
if (!ctrlname || ctrlname.length == 0) {
ctrlname = "inputsuche";
}
var elm = document.getElementById(ctrlname);
if (elm.value == "Suche" || elm.value == "Ligenname" || elm.value == "Vereinsname")
elm.value = "";
}
function ovKeyCheckEnterAmatuerSuche(eventObj,boxID,ajaxControlName,forceQueryString)
{
var keyCode;
if (document.all) {
keyCode = eventObj.keyCode;
}
else {
keyCode = eventObj.which;
}
if (keyCode == 13) {
ovAmateurSucheLigaVerein(ovToolkit.encode_utf8($('suchbegriff').value),1,boxID,ajaxControlName,forceQueryString);
return false;
}
}
function ovAmateurIndexSucheLigaVerein(boxID,direction,index,forcedQueryString)
{
var ligaVerein;
if ($('typeVerein').checked) {
ligaVerein = 0;
}
else {
ligaVerein = 1;
}
forcedQueryString +=  '&ligaVerein='+ligaVerein+'&pageIndex='+index;
//	if($('VereinLigaHasChanged').value != 'aaa')
//	{
//	ovNaviChange(boxID,direction,index,forcedQueryString);
//	}
//	else
//	{
//	forcedQueryString += '&pageIndex='+index;
var boxIDArray = boxID+'_cont0';
ovAjax.SetReloadIcon(boxIDArray);
var myAjax=new Ajax.Updater(boxIDArray,ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype='+boxID+'&boxID='+boxID+'&'+ovAddForcedQueryStringParams(queryString,"&"+forcedQueryString),{method:'get',evalScripts:true });
$('VereinLigaHasChanged').value = '';
//	}
}
function ovAmateurSucheLigaVerein(suchbegriff,info,boxID,ajaxControlName,forceQueryString) //info:1=suche;info:2=index
{
var ligaVerein;
if ($('typeVerein').checked) {
ligaVerein = 0;
}
else {
ligaVerein = 1;
}
forceQueryString +=  'suchbegriff='+suchbegriff + '&info='+info+'&ligaVerein='+ligaVerein;
//	if($('VereinLigaHasChanged').value != 'aaa')
//	{
//	ovSortChange(boxID,0,'asc',ajaxControlName,forceQueryString);
//	}
//	else
//	{
var boxIDArray = boxID.split('_');
ovAjax.SetReloadIcon(boxIDArray);
var myAjax=new Ajax.Updater(boxID,ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype='+ajaxControlName+'&boxID='+boxIDArray[0]+'&'+ovAddForcedQueryStringParams(queryString,"&"+forceQueryString),{method:'get',evalScripts:true });
$('VereinLigaHasChanged').value = '';
//}
// var myAjax=new Ajax.Updater('amateure_suchergebnis_content',ovAjax.rootURL+'/rkajax/amateursuchergebnis/?suchbegriff='+suchbegriff + '&info='+info+'&ligaVerein='+ligaVerein,{method:'get',onComplete:ovAmateurLigenSucheRefresh,evalScripts:true});
}
function ovUpdateDirectPageNavigation(boxID,TargetPage,TotalPages)
{
var boxIDArray = boxID.split('_');
var PageElement;
var ParentContainer;
var PageElements;
var TargetIndex;
var Counter = 0;
var FirstPageIndex = 1;
var TotalPageContainer;
var NavigationContainer;
if(boxIDArray.length > 0)
{
ParentContainer = document.getElementsByClassName(boxIDArray[0]+'_PageNav')[0];
}
if(ParentContainer)
{
var baseTPwidth = 40;
var basePwidth = 32;
//alle alten Elemente werden hier zunaechst entfernt
while (ParentContainer.firstChild)
{
ParentContainer.removeChild(ParentContainer.firstChild);
}
//Bestimmt die Anzahl der Anker,welche generiert werden muessen,um die Seiten in der
//Navigation darzustellen
if (TotalPages < 6)
{
Counter = TotalPages;
}
else
{
Counter = 5;
}
//Logik um die aktuell gewaehlte Seite mittig zu halten und sie beim Anfang und Ende
//der Tabelle entsprechend am Rand zu platzieren.
//Auch verantwortlich fuer die angezeigten Seiten allgemein,da hier das erste Anker Element
//festgelegt wird
if(TargetPage > 2)
{
if((Math.round(TargetPage)+3) <= TotalPages)
{
FirstPageIndex = Math.round(TargetPage)-1;
}
else
{
FirstPageIndex = Math.round(TargetPage)-((Math.round(Counter)-1)-(Math.round(TotalPages)-Math.round(TargetPage)));
}
}
//Die Schleife generiert die Anker Elemente zur Darstellung der Seiten im Navigationscontrol,//fuellt sie mit den entsprechenden Werten und markiert die aktuell ausgewaehlte Seite und
//fuegt diese dem Container hinzu
for(var x = 0; x < Counter; x++)
{
var NewPage = document.createElement('a');
var PageText = Math.round(FirstPageIndex)+x;
var PageValue = Math.round(PageText)-1;
NewPage.innerHTML = PageText;
NewPage.href = "#";
if (Math.round(PageText) > 9)
{basePwidth = 40;}
if(Math.round(PageText) > 99)
{basePwidth = 45;}
NewPage.onclick =  (function(PageValue){return function(){ovNaviChange(boxID,'random',PageValue);return false;}})(PageValue);
NewPage.id = boxID+"_Page"+ PageValue;
if(PageText == Math.round(TargetPage)+1)
{
if(TargetPage == null)
TargetPage = Math.round(PageText)-1;
NewPage.className = "navi_seite_markiert PageNav_Page PageNav_Page_Sel";
}
else
{
NewPage.className = "navi_seite_normal PageNav_Page";
}
ParentContainer.appendChild(NewPage);
}
//Der Span mit der Anzeige der Gesamtseiten wird erstellt
//und dem DIV hinzugefuegt
var NewTotalPages = document.createElement('span');
var NewTotalPagesText = document.createElement('span');
NewTotalPages.id = boxIDArray[0]+"_TotalPages";
NewTotalPages.innerHTML = TotalPages;
NewTotalPages.className = "navi_seite_normal "+NewTotalPages.id+" TotPageRight";
NewTotalPagesText.id = boxIDArray[0]+"_TotalPagesText";
NewTotalPagesText.innerHTML = "von";
NewTotalPagesText.className = "navi_seite_normal "+NewTotalPages.id+" TotPageLeft";
ParentContainer.appendChild(NewTotalPagesText);
ParentContainer.appendChild(NewTotalPages);
if (TotalPages > 99)
baseTPwidth = 60;
ParentContainer.style.width = (baseTPwidth + (Math.round(Counter)*basePwidth))+"px";
ovUpdateNavControlImages(boxID,TargetPage,TotalPages);
}
}
//Beim Wechsel der Seite muss das moegliche Deaktivieren/Aktivieren der Steuerelemente beruecksichtigt
//werden. Daher werden hier fuer alle Steuerelemente die,nach dem Seitenwechsel aktiven,Hintergrundbilder
//gesetzt.
function ovUpdateNavControlImages(boxID,Currentpage,Pages)
{
var NavigationContainer;
var boxIDArray;
if(Pages)
{
boxIDArray = boxID.split('_');
if(boxIDArray.length > 0)
{
NavigationContainer = document.getElementById(boxIDArray[0]+'_blaettern');
}
else{
NavigationContainer = document.getElementById(boxID+'_blaettern');}
if(NavigationContainer)
{
var Links = NavigationContainer.getElementsByTagName('a');
for (var Link in Links)
{
if(Links[Link] != null)
{
var LinkImage = Links[Link].firstChild;
if(Links[Link].className == "blaettern_anfang")
{
if (Pages > 1 && Currentpage == 0){
LinkImage.src = ovAjax.rootURL+'/Library/images/ic-ct-rev-end-deak-v2.png';
Links[Link].removeAttribute('href');
}
else if (Pages == 1){
LinkImage.src = ovAjax.rootURL+'/Library/images/ic-ct-rev-end-deak-v2.png';
Links[Link].removeAttribute('href');
}
else{
LinkImage.src = ovAjax.rootURL+'/Library/images/ic-ct-rev-end-v4.png';
var destination = "first";
Links[Link].href = 'javascript:ovNaviChange('+boxID+','+destination+','+0+');return false;';
Links[Link].onclick = (function(destination){return function(){ovNaviChange(boxID,destination,0);return false;}})(destination);
}
}
else if(Links[Link].className == "blaettern_anfang_zurueck" || Links[Link].className == "blaettern_zurueck")
{
if (Pages > 1 && Currentpage == 0){
Links[Link].removeAttribute('href');
LinkImage.src = ovAjax.rootURL+'/Library/images/ic-rev-deak-v2.png';}
else if (Pages == 1){
Links[Link].removeAttribute('href');
LinkImage.src = ovAjax.rootURL+'/Library/images/ic-rev-deak-v2.png';
}
else{
var destination = "backwards";
if(Links[Link].className == "blaettern_zurueck")
{
Links[Link].href = 'javascript:ovNaviChange('+boxID+','+destination+','+-1+');return false;';
Links[Link].onclick = (function(destination){return function(){ovNaviChange(boxID,destination,-1);return false;}})(destination);
}
else
{
Links[Link].href = 'javascript:ovNaviChange('+boxID+','+destination+','+0+');return false;';
Links[Link].onclick = (function(destination){return function(){ovNaviChange(boxID,destination,0);return false;}})(destination);
}
LinkImage.src = ovAjax.rootURL+'/Library/images/ic-rev-v4.png';}
}
else if(Links[Link].className == "blaettern_ende")
{
if (Pages > 1 && Currentpage == Pages-1){
Links[Link].removeAttribute('href');
LinkImage.src = ovAjax.rootURL+'/Library/images/ic-ct-ffw-end-deak-v2.png';}
else if (Pages == 1){
Links[Link].removeAttribute('href');
LinkImage.src = ovAjax.rootURL+'/Library/images/ic-ct-ffw-end-deak-v2.png';}
else{
var destination = "last";
Links[Link].href = 'javascript:ovNaviChange('+boxID+','+destination+','+0+');return false;';
Links[Link].onclick = (function(destination){return function(){ovNaviChange(boxID,destination,0);return false;}})(destination);
LinkImage.src = ovAjax.rootURL+'/Library/images/ic-ct-ffw-end-v4.png';
}
}
else if(Links[Link].className == "blaettern_ende_vor" || Links[Link].className == "blaettern_vor")
{
if (Pages > 1 && Currentpage == Pages-1){
Links[Link].removeAttribute('href');
LinkImage.src = ovAjax.rootURL+'/Library/images/ic-ffw-deak-v2.png';}
else if (Pages == 1){
Links[Link].removeAttribute('href');
LinkImage.src = ovAjax.rootURL+'/Library/images/ic-ffw-deak-v2.png';}
else{
var destination = "forward";
if(Links[Link].className == "blaettern_vor")
{
Links[Link].href = 'javascript:ovNaviChange('+boxID+','+destination+','+-1+');return false;';
Links[Link].onclick = (function(destination){return function(){ovNaviChange(boxID,destination,-1);return false;}})(destination);
}
else
{
Links[Link].href = 'javascript:ovNaviChange('+boxID+','+destination+','+0+');return false;';
Links[Link].onclick = (function(destination){return function(){ovNaviChange(boxID,destination,0);return false;}})(destination);
}
LinkImage.src = ovAjax.rootURL+'/Library/images/ic-ffw-v4.png';
}
}
else if(Links[Link].className == "Pager_Description Page_Forw")
{
if (Pages > 1 && Currentpage == Pages-1){
Links[Link].removeAttribute('href');
Links[Link].removeAttribute('onclick');
}
else if (Pages == 1){
Links[Link].removeAttribute('href');
Links[Link].removeAttribute('onclick');
}
else{
var destination = "forward";
if(Links[Link].className == "Pager_Description Page_Forw")
{
Links[Link].href = 'javascript:ovNaviChange('+boxID+','+destination+','+-1+');return false;';
Links[Link].onclick = (function(destination){return function(){ovNaviChange(boxID,destination,-1);return false;}})(destination);
}
else
{
Links[Link].href = 'javascript:ovNaviChange('+boxID+','+destination+','+0+');return false;';
Links[Link].onclick = (function(destination){return function(){ovNaviChange(boxID,destination,0);return false;}})(destination);
}
}
}
else if(Links[Link].className == "Pager_Description Page_Back")
{
if (Pages > 1 && Currentpage == 0){
Links[Link].removeAttribute('href');
Links[Link].removeAttribute('onclick');
}
else if (Pages == 1){
Links[Link].removeAttribute('href');
Links[Link].removeAttribute('onclick');
}
else{
var destination = "backwards";
if(Links[Link].className == "Pager_Description Page_Back")
{
Links[Link].href = 'javascript:ovNaviChange('+boxID+','+destination+','+-1+');return false;';
Links[Link].onclick = (function(destination){return function(){ovNaviChange(boxID,destination,-1);return false;}})(destination);
}
else
{
Links[Link].href = 'javascript:ovNaviChange('+boxID+','+destination+','+0+');return false;';
Links[Link].onclick = (function(destination){return function(){ovNaviChange(boxID,destination,0);return false;}})(destination);
}
if (LinkImage.src!=undefined) {
LinkImage.src = ovAjax.rootURL+'/Library/images/ic-rev-v4.png';}
}
}
}
}
}
}
}
//Aktualisiert die statische Anzeige der momentan aktuellen Seite
function ovUpdatePageInfo(boxID,CurrentPage,Pages)
{
var boxIDArray = boxID.split('_');
if(CurrentPage > 0)
{
var PageInfo;
var TotalPages;
if(boxIDArray.length > 0){
PageInfo = document.getElementsByClassName(boxIDArray[0]+'_CurrentPage');
TotalPages = document.getElementsByClassName(boxIDArray[0]+'_TotalPages');
}
else{
PageInfo = document.getElementsByClassName(boxID+'_CurrentPage');
TotalPages = document.getElementsByClassName(boxIDArray+'_TotalPages');
}
if (PageInfo[0])
{
PageInfo[0].innerHTML = CurrentPage;
if(TotalPages[0])
{
var test = " ";
TotalPages[0].innerHTML = "&nbsp;"+ "von " + Pages;
}
}
ovUpdateNavControlImages(boxID,CurrentPage-1,Pages);
}
else if(CurrentPage == -1)
{
var links;
var ActiveLink = -1;
if($(boxID+'_navlinks'))
{
links = $(boxID+'_navlinks').getElementsByTagName('a');
}
if(links)
{
for(var a = 0; a < links.length; a++)
{
if(links[a].className.search('sel') != -1)
{
ActiveLink = a;
break;
}
}
}
else
{
ActiveLink = 0;
}
if(ActiveLink != -1)
{
var MainContainer = $(boxID+'_cont'+ActiveLink);
var Containers = MainContainer.getElementsByClassName('subcontent');
for(var b = 0; b < Containers.length; b++)
{
if(Containers[b].style.display != "none")
{
var PageInfo;
if(boxIDArray.length > 0){
PageInfo = document.getElementsByClassName(boxIDArray[0]+'_CurrentPage');
}
else{
PageInfo = document.getElementsByClassName(boxID+'_CurrentPage');
}
if (PageInfo[0])
{
var NewPageIndex = b+1;
PageInfo[0].innerHTML = NewPageIndex;
}
break;
}
}
ovUpdateNavControlImages(boxID,CurrentPage-1,Pages);
}
}
}
//erfolgt eine Veraenderung der Navigationsdarstellung ausserhalb
//des Blaettern Controls,so prueft diese Funktion den momentanen
//Zustand des Blaettern Controls und passt dessen Darstellung entsprechend an
function ovHandleNavDisplay(boxID,KnownPage,container,activeTab,ShowLastPage)
{
var PageContainer = document.getElementsByClassName(boxID+'_PageNav')[0];
var Pages;
if(container)
{
var Containers = container.getElementsByClassName('subcontent');
var Pages = document.getElementById(Containers[Math.round(Containers.length)-1].id+'_pages');
if(Pages){
ovUpdateDirectPageNavigation(boxID.split('_')[0],0,Pages.value);
}
}
else if(PageContainer)
{
var links;
var ActiveLink = -1;
if($(boxID+'_navlinks'))
{
links = $(boxID+'_navlinks').getElementsByTagName('a');
}
if(links)
{
for(var a = 0; a < links.length; a++)
{
if(links[a].className.search('sel') != -1)
{
ActiveLink = a;
break;
}
}
}
else
{
ActiveLink = 0;
}
if(ActiveLink != -1)
{
var MainContainer = $(boxID+'_cont'+ActiveLink);
var Containers = MainContainer.getElementsByClassName('subcontent');
Pages =  $(Containers[0].id+'_pages');
if(Pages)
{
ovUpdateDirectPageNavigation(boxID,KnownPage,Pages.value);
}
}
}else{
var MainContainer;
if(boxID.split('_')[0].length > 0)
{MainContainer = $(boxID.split('_')[0]+'_cont'+activeTab);}
else
{MainContainer = $(boxID+'_cont'+activeTab);}
if(MainContainer)
{
var Containers = MainContainer.getElementsByClassName('subcontent');
Pages =  $(Containers[0].id+'_pages');
}
if(Pages)
{
if(ShowLastPage != "True"){
ovUpdatePageInfo(boxID,Math.round(KnownPage)+1,Pages.value);}
else{ovUpdatePageInfo(boxID,Math.round(Pages.value),Pages.value);}
}
else
{ovUpdatePageInfo(boxID,Math.round(KnownPage)+1);}
}
}
//Ermittelt die absolute Position eines Elements auf der Seite
function ovGetPosition(obj) {
var pos = { x:0,y:0 };
do {
pos.x += obj.offsetLeft;
pos.y += obj.offsetTop;
} while (obj = obj.offsetParent);
return pos;
}
function ovGetTabIndex(boxID)
{
var links;
if($(boxID+'_navlinks')) {
links = $(boxID+'_navlinks').getElementsByTagName('a');
}
else
{
var boxIDArray = boxID.split('_');
if($(boxIDArray[0]+'_navlinks')) {
links = $(boxIDArray[0]+'_navlinks').getElementsByTagName('a');
}
}
var PageIndex;
var ActiveLink = -1;
if(links) {
for(var a = 0; a < links.length; a++) {
if(links[a].className.search('sel') != -1) {
ActiveLink = a;
break;
}
}
}
else {
ActiveLink = 0;
}
return ActiveLink;
}
//Fuegt dem Container einen farblichen Vordergrund und ein Ladeicon hinzu,um bei einem Ajax Request
//die uebergangszeit vom alten zum neuen Content etwas weicher darzustellen und den ansonsten nicht sichtbaren Callback
//als Ladevorgang zu kennzeichnen.
//
//Show=true: Standartverhalten.
//
//Show=false: Entfernt das AjaxImg sowie den teilweise transparenten Hintergrund vom Container
//
//AjaxError = true: markiert einen fehlgeschlagenen Callback,welchen diese Funtion als markierten Text auf
//der Seite ausgibt und nach einer definierten Zeit durch einen Fading Effekt wieder entfernt.
function ovManageAjaxLoader(boxID,Show,AjaxError,useThisContainer)
{
var links;
if($(boxID+'_navlinks')) {
links = $(boxID+'_navlinks').getElementsByTagName('a');
}
var PageIndex;
var ActiveLink = -1;
if(links) {
for(var a = 0; a < links.length; a++) {
if(links[a].className.search('sel') != -1) {
ActiveLink = a;
break;
}
}
}
else {
ActiveLink = 0;
}
if(ActiveLink != -1) {
var CONTAINER;
var imgClass;
var imgbgrWidth;
var imgbgrHeight;
if (useThisContainer) {
CONTAINER = $(useThisContainer);
imgbgrWidth = CONTAINER.style.width.toString().replace('px','');
imgbgrHeight = CONTAINER.style.height.toString().replace('px','');
imgClass = "LoaderImgAbs";
}
else {
var MainContainer = $(boxID+'_cont'+ActiveLink);
var Containers = MainContainer.getElementsByClassName('subcontent');
for(var b = 0; b < Containers.length; b++) {
if(Containers[b].style.display != "none") {
CONTAINER = Containers[b];
imgbgrWidth =  CONTAINER.offsetWidth; //CONTAINER.clientWidth.toString();
imgbgrHeight = CONTAINER.offsetHeight;//CONTAINER.clientHeight.toString();
imgClass="LoaderImgAbs";
break;
}
}
}
if (CONTAINER) {
if(Show) {
var imagebackground = document.createElement('div');
var img = document.createElement('img');
imagebackground.id = boxID+'_cont'+ActiveLink+"_subcont"+b+"_Background";
imagebackground.style.width = (imgbgrWidth-3)+"px";
imagebackground.style.height = imgbgrHeight+"px";
imagebackground.style.overflow = 'hidden';
imagebackground.className = "opaque LoaderBG";
img.id = boxID+'_cont'+ActiveLink+"_subcont"+b+"_AjaxImg";
img.className = imgClass;
img.src = ovAjax.mediadburl+"/library/img/ajax-reload-m.gif";
if(document.getElementById(boxID+'_cont'+ActiveLink+"_subcont"+b+"_Background")) {
CONTAINER.removeChild(document.getElementById(boxID+'_cont'+ActiveLink+"_subcont"+b+"_Background"));
}
CONTAINER.insertBefore(imagebackground,CONTAINER.firstChild);
CONTAINER.insertBefore(img,CONTAINER.firstChild);
var pos = ovGetPosition(img);
if (imgbgrWidth == '335') {
imagebackground.style.marginTop = "-4px";
imagebackground.style.left = "4px";
img.style.marginTop = "-6px";
img.style.left =(Math.round(imgbgrWidth)/2)-(Math.round(img.offsetWidth)/2)+"px";
}
else if(imgbgrWidth == '342') {
img.style.top = CONTAINER.offsetTop+(Math.round(imgbgrHeight)/2)-(Math.round(img.offsetHeight)/2)+"px";
img.style.left =(Math.round(imgbgrWidth)/2)-(Math.round(img.offsetWidth)/2)+"px";
}
else {
img.style.top = (Math.round(imgbgrHeight)/2)+"px";//(pos.y)+(Math.round(imgbgrHeight)/2)+"px";
img.style.left =(Math.round(imgbgrWidth)/2)+"px";
}
}
else {
var imagebackground = document.getElementById(boxID+'_cont'+ActiveLink+"_subcont"+b+"_Background");
var img = document.getElementById(boxID+'_cont'+ActiveLink+"_subcont"+b+"_AjaxImg");
if(AjaxError) {
if(imagebackground && img) {
var ErrorMsg = document.createElement('span');
ErrorMsg.id = boxID+'_cont'+ActiveLink+"_subcont"+b+"_ErrorMsg";
ErrorMsg.className = "AjaxError";
ErrorMsg.innerHTML = "Fehler beim Laden";//
if(document.getElementById(boxID+'_cont'+ActiveLink+"_subcont"+b+"_ErrorMsg")) {
CONTAINER.removeChild(document.getElementById(boxID+'_cont'+ActiveLink+"_subcont"+b+"_ErrorMsg"));
}
CONTAINER.insertBefore(ErrorMsg,CONTAINER.firstChild);
var pos  = ovGetPosition(ErrorMsg);
if(document.getElementById(boxID+'_blaettern') && document.getElementById(boxID+'_blaettern').className.indexOf('336') != -1) {
ErrorMsg.style.top = "54%";
ErrorMsg.style.left =(Math.round(CONTAINER.getElementsByClassName('tborder-b')[0].offsetWidth)/2)-(Math.round(ErrorMsg.offsetWidth)/2)+"px";
}
else {
if(useThisContainer)
{
ErrorMsg.style.marginTop = "-1px";
ErrorMsg.style.left = (Math.round(imgbgrWidth)/2)-(Math.round(ErrorMsg.offsetWidth)/2)+"px";
}
else
{
ErrorMsg.style.top =  (pos.y)+(Math.round(CONTAINER.getElementsByClassName('tborder-b')[0].offsetHeight)/2)+"px";
ErrorMsg.style.left = (Math.round(CONTAINER.getElementsByClassName('tborder-b')[0].offsetWidth)/2)+(pos.x)-(Math.round(ErrorMsg.offsetWidth)/2)+"px";
}
}
CONTAINER.removeChild(img);
Effect.Fade(ErrorMsg.id,{ duration: 3.0 });
Effect.Fade(imagebackground.id,{ duration: 3.0 });
}
}
else {
if(imagebackground && img) {
CONTAINER.removeChild(img);
CONTAINER.removeChild(imagebackground);
}
}
}
}
}
}
//wird beim OnClick der Navigationsbuttons aufgerufen
function ovNaviChange(boxID,NavDirection,TargetPage,ForcedQueryString)
{
ovShowNextContainer(boxID,NavDirection,TargetPage,ForcedQueryString);
}
//Wird beim OnClick eines Reiters aufgerufen
function ovTabChange(boxID,tabIndex,ajaxControlName,ShowNav,ShowLastPage,ForcedQueryString)
{
ovShowSelContainer(boxID,tabIndex,ajaxControlName,ShowNav,ForcedQueryString,ShowLastPage);
}
//Wird beim aendern der Sortierung aufgerufen
function ovSortChange(boxID,sortIndex,sortOrder,ajaxControlName,forceQueryString)
{
var boxIDArray = boxID.split('_');
if(Ajax.activeRequestCount == 0)
{
var links;
var Pages;
if($(boxID+'_navlinks'))
{
links = $(boxID+'_navlinks').getElementsByTagName('a');
}
var PageIndex;
var ActiveLink = -1;
if(links)
{
for(var a = 0; a < links.length; a++)
{
if(links[a].className.search('sel') != -1)
{
ActiveLink = a;
break;
}
}
}
else
{
ActiveLink = 0;
}
if(ActiveLink != -1)
{
var MainContainer = $(boxID);
var Containers = MainContainer.getElementsByClassName('subcontent');
if(Containers[0].id.indexOf("subcont_")!=-1)
{
Pages = null;
}
else
{
Pages =  $(Containers[0].id+'_0_pages');
}
}
if (!forceQueryString || forceQueryString.length == 0)
forceQueryString = "";
var myAjax=new Ajax.Updater(boxID,ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype='+ajaxControlName+'&sortIndex='+sortIndex+'&sortOrder='+sortOrder+'&boxID='+boxIDArray[0]+'&'+ovAddForcedQueryStringParams(queryString,"&"+forceQueryString),{method:'get',onCreate:function(){ovManageAjaxLoader(boxIDArray[0],true);},onComplete:function(){
ovManageAjaxLoader(boxIDArray[0],false);
var test = ovGetTabIndex(boxID);
ovHandleNavDisplay(boxIDArray[0],Pages,0,test);
},onFailure:function(){ovManageAjaxLoader(boxIDArray[0],false,true);},evalScripts:true });
}
ovAjax.SetIVW("");
}
function ovAddForcedQueryStringParams(querystring,forcedquerystring)
{
var FQSArray = forcedquerystring.split('&');
for(var a = 0; a < FQSArray.length; a++)
{
if(FQSArray[a].length > 0)
{
var FOSSubArray = FQSArray[a].split('=');
if(querystring.indexOf(FOSSubArray[0]) == -1)
{
querystring += "&"+FQSArray[a];
}
else
{
var QSArrayParams = querystring.split('&');
var NewParams = '';
for(var a = 0; a < FQSArray.length; a++)
{
if(FQSArray[a].length > 0)
{
var FOSSubArray = FQSArray[a].split('=');
if(querystring.indexOf(FOSSubArray[0]) != -1)
{
for(var b = 0; b < QSArrayParams.length; b++)
{
var QSSubArrayParams = QSArrayParams[b].split('=');
if(QSSubArrayParams[0] == FOSSubArray[0])
{
NewParams += '&'+QSSubArrayParams[0]+'='+FOSSubArray[1];
}
}
}
else
{
NewParams += '&'+FOSSubArray[0]+'='+FOSSubArray[1];
}
}
}
querystring = NewParams;
break;
}
}
}
return querystring;
}
function ovIvwRefresh()
{
ovAjax.SetIVW("");
}
//Gibt die Anzahl der Reiter zurueck
function ovAnzTabs(boxID) {
var parentDiv = $(boxID+'_navlinks');
if (parentDiv)
return parentDiv.getElementsByTagName('a').length;
else
return 0;
}
//Zeigt/Versteckt den uebergebenen Container anhand des "Show" flags
function ovShowHideContainer(Show,Container)
{
if(Show)
{
Container.style.visibility = 'visible'
Container.style.display    = 'block'
}else{
Container.style.visibility = 'hidden'
Container.style.display    = 'none'
}
}
//waehlt entsprechend der Navigation den naechsten Container zur Darstellung,macht diesen sichtbar
//und den zuletzt aktiven Container unsichtbar
function ovShowNextContainer(boxID,NavDirection,TargetPage,ForcedQueryString)
{
//queryString wird im Fall einer Parameteruebergabe ueberschrieben
if(ForcedQueryString)
{
if(queryString.indexOf(ForcedQueryString) == -1)
{
queryString = ovAddForcedQueryStringParams(queryString,ForcedQueryString);
}
}
var links;
if($(boxID+'_navlinks'))
{
links = $(boxID+'_navlinks').getElementsByTagName('a');
}
var PageIndex;
var ActiveLink = -1;
if(links)
{
for(var a = 0; a < links.length; a++)
{
if(links[a].className.search('sel') != -1)
{
ActiveLink = a;
break;
}
}
}
else
{
ActiveLink = 0;
}
if(ActiveLink != -1)
{
var MainContainer = $(boxID+'_cont'+ActiveLink);
var Containers = MainContainer.getElementsByClassName('subcontent');
var Pages =  $(Containers[0].id+'_pages');
for(var b = 0; b < Containers.length; b++)
{
if(Containers[b].style.display != "none")
{
var ContainerCtrlID_Prefix;
var ContainerIDArray = Containers[b].id.split('_');
var ContainerCtrlID_Suffix = ContainerIDArray[ContainerIDArray.length-1];
for(var z=0;z < ContainerIDArray.length-1; z++)
{
if(ContainerCtrlID_Prefix)
{
ContainerCtrlID_Prefix += ContainerIDArray[z]+"_";
}
else
{
ContainerCtrlID_Prefix = ContainerIDArray[z]+"_";
}
}
if(NavDirection == "forward")
{
var NextContainer = $(ContainerCtrlID_Prefix+(Math.round(ContainerCtrlID_Suffix)+1));
if(!NextContainer)
{
//Hier wird die Gesamtanzahl der Seiten,welche in einem hidden feld
//hinterlegt wurden,mit der aktuellen Seite verglichen um eine Navigation ueber
//die maximal Anzahl aller Seiten hinaus zu verhindern
if(ContainerCtrlID_Suffix < Pages.value-1)
{
activeBoxID    = MainContainer.id;
activeTab       = ActiveLink;
PageIndex       = Math.round(ContainerCtrlID_Suffix)+1;
ContainerToBeRendered = ContainerCtrlID_Prefix+(Math.round(ContainerCtrlID_Suffix)+1);
if(Ajax.activeRequestCount == 0)
{
new Ajax.Request(ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype="+ContainerIDArray[0]+"&pageIndex="+PageIndex+ovCheckSorting(Containers[b].id)+"&boxID="+boxID+"&"+queryString,{method:'get',onSuccess:function(transport)
{
ovAjax.SetIVW("");
ovManageAjaxLoader(boxID,false);
$(Containers[b].id).hide();
ovSelContainerRefreshPaging(transport);
if(TargetPage == -1)
{
ovUpdatePageInfo(boxID,Math.round(ContainerCtrlID_Suffix)+2,Pages.value);
}
else
{
ovUpdateDirectPageNavigation(boxID,Math.round(ContainerCtrlID_Suffix)+1,Pages.value);
}
},onCreate:function(){ovManageAjaxLoader(boxID,true);},onFailure:function(){ovManageAjaxLoader(boxID,false,true);},evalScripts:true});
}
}
}
else
{
$(Containers[b].id).hide();
$(NextContainer.id).show();
if(TargetPage == -1)
{
ovUpdatePageInfo(boxID,Math.round(ContainerCtrlID_Suffix)+2,Pages.value);
}
else
{
ovUpdateDirectPageNavigation(boxID,Math.round(ContainerCtrlID_Suffix)+1,Pages.value);
}
}
}
else if(NavDirection == "backwards" && ContainerCtrlID_Suffix > 0)
{
var PrevContainer = $(ContainerCtrlID_Prefix+(Math.round(ContainerCtrlID_Suffix)-1));
if(!PrevContainer)
{
//Hier wird die Gesamtanzahl der Seiten,welche in einem hidden feld
//hinterlegt wurden,mit der aktuellen Seite verglichen um eine Navigation ueber
//die maximal Anzahl aller Seiten hinaus zu verhindern
activeBoxID    = MainContainer.id;
activeTab       = ActiveLink;
PageIndex       = Math.round(ContainerCtrlID_Suffix)-1;
ContainerToBeRendered = ContainerCtrlID_Prefix+(Math.round(ContainerCtrlID_Suffix)-1);
if(Ajax.activeRequestCount == 0)
{
new Ajax.Request(ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype="+ContainerIDArray[0]+"&pageIndex="+PageIndex+ovCheckSorting(Containers[b].id)+"&boxID="+boxID+"&"+queryString,{method:'get',onSuccess:function(transport)
{
ovAjax.SetIVW("");
ovManageAjaxLoader(boxID,false);
$(Containers[b].id).hide();
ovSelContainerRefreshPaging(transport);
if(TargetPage == -1)
{
ovUpdatePageInfo(boxID,Math.round(ContainerCtrlID_Suffix),Pages.value);
}
else
{
ovUpdateDirectPageNavigation(boxID,Math.round(ContainerCtrlID_Suffix)-1,Pages.value);
}
},onCreate:function(){ovManageAjaxLoader(boxID,true);},onFailure:function(){ovManageAjaxLoader(boxID,false,true);},evalScripts:true});
}
}
else
{
$(Containers[b].id).hide();
$(PrevContainer.id).show();
if(TargetPage == -1)
{
ovUpdatePageInfo(boxID,Math.round(ContainerCtrlID_Suffix),Pages.value);
}
else
{
ovUpdateDirectPageNavigation(boxID,Math.round(ContainerCtrlID_Suffix)-1,Pages.value);
}
}
}
else if(NavDirection == "first" && ContainerCtrlID_Suffix > 0)
{
var FirstContainer = $(ContainerCtrlID_Prefix+0);
if(FirstContainer)
{
$(Containers[b].id).hide();
$(FirstContainer.id).show();
if(TargetPage == -1)
{
ovUpdatePageInfo(boxID,1,Pages.value);
}
else
{
ovUpdateDirectPageNavigation(boxID,0,Pages.value);
}
}
}
else if(NavDirection == "last" && ContainerCtrlID_Suffix < Pages.value-1)
{
var LastContainer = $(ContainerCtrlID_Prefix+(Math.round(Pages.value)-1));
if(!LastContainer)
{
//Hier wird die Gesamtanzahl der Seiten,welche in einem hidden feld
//hinterlegt wurden,mit der aktuellen Seite verglichen um eine Navigation ueber
//die maximal Anzahl aller Seiten hinaus zu verhindern
activeBoxID    = MainContainer.id;
activeTab       = ActiveLink;
PageIndex       = Math.round(Pages.value)-1;
ContainerToBeRendered = ContainerCtrlID_Prefix+(Math.round(Pages.value)-1);
if(Ajax.activeRequestCount == 0)
{
new Ajax.Request(ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype="+ContainerIDArray[0]+"&pageIndex="+PageIndex+ovCheckSorting(Containers[b].id)+"&boxID="+boxID+"&"+queryString,{method:'get',onSuccess:function(transport)
{
ovAjax.SetIVW("");
ovManageAjaxLoader(boxID,false);
$(Containers[b].id).hide();
ovSelContainerRefreshPaging(transport);
if(TargetPage == -1)
{
ovUpdatePageInfo(boxID,Pages.value,Pages.value);
}
else
{
ovUpdateDirectPageNavigation(boxID,Math.round(Pages.value)-1,Pages.value);
}
},onCreate:function(){ovManageAjaxLoader(boxID,true);},onFailure:function(){ovManageAjaxLoader(boxID,false,true);},evalScripts:true});
}
}
else
{
$(Containers[b].id).hide();
$(LastContainer.id).show();
if(TargetPage == -1)
{
ovUpdatePageInfo(boxID,Pages.value,Pages.value);
}
else
{
ovUpdateDirectPageNavigation(boxID,Math.round(Pages.value)-1,Pages.value);
}
}
}
else if (NavDirection == "random")
{
var RandomContainer = $(ContainerCtrlID_Prefix+TargetPage);
if(!RandomContainer)
{
//Hier wird die Gesamtanzahl der Seiten,welche in einem hidden feld
//hinterlegt wurden,mit der aktuellen Seite verglichen um eine Navigation ueber
//die maximal Anzahl aller Seiten hinaus zu verhindern
activeBoxID     = MainContainer.id;
activeTab       = ActiveLink;
PageIndex       = TargetPage;
ContainerToBeRendered = ContainerCtrlID_Prefix+TargetPage;
if(Ajax.activeRequestCount == 0)
{
new Ajax.Request(ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype="+ContainerIDArray[0]+"&pageIndex="+PageIndex+ovCheckSorting(Containers[b].id)+"&boxID="+boxID+"&"+queryString,{method:'get',onSuccess:function(transport)
{
ovAjax.SetIVW("");
ovManageAjaxLoader(boxID,false);
$(Containers[b].id).hide();
ovSelContainerRefreshPaging(transport);
ovUpdateDirectPageNavigation(boxID,TargetPage,Pages.value);
},onComplete:function()
{
},onCreate:function(){ovManageAjaxLoader(boxID,true);},onFailure:function(){ovManageAjaxLoader(boxID,false,true);},evalScripts:true});
}
}
else
{
$(Containers[b].id).hide();
$(RandomContainer.id).show();
ovUpdateDirectPageNavigation(boxID,TargetPage,Pages.value);
}
}
break;
}
}
}
}
//ueberprueft,ob die Tabelle sortiert wurde und gibt,falls notwendig,einen entsprechend formatierten
//parameterstring zurueck,welcher die Art der Sortierung beinhaltet
function ovCheckSorting(CtrlID)
{
var Headers = $(CtrlID).getElementsByTagName('tr');
if (Headers && Headers.length > 0)
{
var HeaderColumns = Headers[0].getElementsByTagName('a');
for( var x = 0; x < HeaderColumns.length; x++)
{
if(HeaderColumns[x].className == "sortdown"){
return "&SortIndex="+x+"&SortOrder=asc";
}else if(HeaderColumns[x].className == "sortup"){
return "&SortIndex="+x+"&SortOrder=desc";
}
}
}
return "";
}
//Setzt die Selektierung des vorher selektierten Reiter zurueck und selektiert den ausgewaehlten Reiter
function ovMarkSelTab(boxID,tabIndex)
{
var anzTabs = ovAnzTabs(boxID);
if (anzTabs > 0) {
var links= $(boxID+'_navlinks').getElementsByTagName('a');
for(var i = 0; i < anzTabs; i++) {
if(links[i].id==boxID+'_tab_'+tabIndex) {
if (i==0)
links[i].className="sel first";
else
links[i].className="sel";
}else{
if (i==0)
links[i].className="first";
else
links[i].className="";
}
}
}
}
var activeBoxID;
var activeTab;
var ContainerToBeRendered;
function ovManageNavVisibility(boxID,ShowNav)
{
var NavControl = $(boxID+'_blaetterncontrol');
if(NavControl != null)
{
if(ShowNav == 'True')
{ovShowHideContainer(true,NavControl);}
else
{ovShowHideContainer(false,NavControl);}
}
}
//Zeigt den Container zum ausgewaehlten Reiter
function ovShowSelContainer(boxID,tabIndex,ajaxControlName,ShowNav,ForcedQueryString,ShowLastPage)
{
var anzTabs = ovAnzTabs(boxID);
var OldContainer;
var NewContainer;
for(var i = 0; i < anzTabs; i++) {
//SubContainer Visibility
var container = $(boxID+'_cont'+i);
if (container) {
if (i == tabIndex) {
NewContainer = container.id;
}
else{
if(container.style.display != "none") {
OldContainer = container.id;
}
}
}
}
if (!NewContainer) {
activeBoxID = boxID;
activeTab = tabIndex;
if(Ajax.activeRequestCount == 0) {
if (!ForcedQueryString || ForcedQueryString.length == 0)
ForcedQueryString = "";
new Ajax.Request(ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype="+ajaxControlName+"&boxID="+boxID+"&"+queryString+"&"+ForcedQueryString,{method:'get',onSuccess: function(transport){ovAjax.SetIVW("");ovManageAjaxLoader(boxID,false);ovAjax.HideElem(OldContainer);ovMarkSelTab(boxID,tabIndex);ovSelContainerRefresh(transport,ShowLastPage); ovManageNavVisibility(boxID,ShowNav)},onFailure: function(){ovManageAjaxLoader(boxID,false,true);},onCreate: function(){ovManageAjaxLoader(boxID,true);},evalScripts:true});
}
}
else{
ovMarkSelTab(boxID,tabIndex);
ovAjax.ShowElem(NewContainer);
if (OldContainer && OldContainer.length > 0) {
ovAjax.HideElem(OldContainer);
}
var MainContainer = $(boxID+'_cont'+tabIndex);
var Containers = MainContainer.getElementsByClassName('subcontent');
var VisiblePage = 0;
for(var b = 0; b < Containers.length; b++) {
if(Containers[b].style.display != "none"){
VisiblePage =  Containers[b].id.split('_')[Containers[b].id.split('_').length-1];
break;
}
}
ovManageNavVisibility(boxID,ShowNav);
ovHandleNavDisplay(boxID,VisiblePage,null,tabIndex);
}
}
//Fuegt den,ueber Ajax-Paging geholten,HTML-Schnipsel in den MainContainer ein
function ovSelContainerRefreshPaging(transport)
{
var newResponse=transport.responseText;
if (newResponse.length > 0)	{
var maincontainer = $(activeBoxID)
if (maincontainer)
{
if(!$(ContainerToBeRendered))
{
maincontainer.innerHTML+=newResponse;
return true;
}
}
}
return false;
}
//Fuegt das ueber Ajax geholten HTML-Schnipsel in den MainContainer ein
function ovSelContainerRefresh(transport,ShowLastPage)
{
var newResponse=transport.responseText;
if (newResponse.length > 0){
var maincontainer = $(activeBoxID + '_maincont')
if (maincontainer)
{
if(!document.getElementById(activeBoxID + '_cont' + activeTab))
{
maincontainer.innerHTML+='<div id="' + activeBoxID + '_cont' + activeTab + '">'+newResponse+'</div>';
}
}
if(document.getElementsByClassName(maincontainer.id.split('_')[0]+'_PageNav').length > 0){
ovHandleNavDisplay(activeBoxID,1,maincontainer,null,ShowLastPage);//maincontainer.id ersetzt durch activeBoxID
}else{
ovHandleNavDisplay(activeBoxID,0,null,activeTab,ShowLastPage);//maincontainer.id ersetzt durch activeBoxID
}
}
}
function ovRefreshLiveContainer(boxID,ajaxControlName)
{
activeBoxID = boxID;
activeTab = 0;
new Ajax.Request(ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype="+ajaxControlName+"&r="+(Math.random()*100000)+"&"+queryString,{method:'get',onSuccess:function(transport)
{
ovManageAjaxLoader(boxID,false);
ovMarkSelTab(boxID,0);
ovHandleNavDisplay(boxID,0);
ovSelLiveContainerRefresh(transport);
},onCreate:function(){ovManageAjaxLoader(boxID,true);},onFailure:function(){ovManageAjaxLoader(boxID,false,true)},evalScripts:true});
}
//Ersetzt den Inhalt des MainContainers mit dem ueber Ajax geholten HTML-Schnipsel
function ovSelLiveContainerRefresh(transport)
{
var newResponse=transport.responseText;
if (newResponse.length > 0){
var maincontainer = $(activeBoxID + '_maincont')
if (maincontainer)
maincontainer.innerHTML='<div id="' + activeBoxID + '_cont' + activeTab + '">'+newResponse+'</div>';
}
ovAjax.SetIVW("");
}
function ovPlayerSlideDown(index,spielerid,infotype,ajaxtype)
{
if ($('openSpielerInfo'+index)) {
if ($('openSpielerInfo'+index).innerHTML.length == 0) {
//Playerinfo wurde fuer diesen Spieler noch nicht geladen -> ueber Ajax laden!
var myAjax=new Ajax.Updater('openSpielerInfo'+index,ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype="+ajaxtype+"&object="+spielerid+"&infotype="+infotype+"&"+queryString,{ method: 'get',onSuccess:ovPlayerSlideDownRefresh});
}
ovSlideDown(index,'sld_slidedown','');
}
}
function ovPlayerSlideDownRefresh() {
ovAjax.SetIVW("");
}
function ovDetailsSlideDown(index,objectid,ajaxtype,boxid)
{
var contname = 'open'+boxid+index;
if ($(contname)) {
if ($(contname).innerHTML.length == 0) {
var myAjax=new Ajax.Updater({ success: contname },ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype="+ajaxtype+"&object="+objectid+"&"+queryString,{method:'get',onCreate: function(){ovManageAjaxLoader(boxid,true,false,'a_sld_'+boxid+index);},onSuccess: function(){ovManageAjaxLoader(boxid,false,false,'a_sld_'+boxid+index);ovSlideDownCloseOpenItemsBefore(index,'sld_'+boxid,'');ovDetailsSlideDownRefresh();},onFailure: function(){ovManageAjaxLoader(boxid,false,true,'a_sld_'+boxid+index);},evalScripts:true });
}
else {
ovSlideDownCloseOpenItemsBefore(index,'sld_'+boxid,'');
}
}
}
function ovDetailsSlideDownRefresh() {
ovAjax.SetIVW("");
}
//--------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------
function ovMarkSelected(parentDiv,ID)
{
if (links=$(parentDiv)) {
var links=$(parentDiv).getElementsByTagName('a');
for(var i=0; i < links.length; i++)
{
if(links[i].id==ID) {
if (parentDiv=='news_navilinks' && ID==5)
links[i].className="f1_sel";
else if (parentDiv=='news_navilinks' && ID==7)
links[i].className="rad_sel";
else if (parentDiv=='news_navilinks' && ID==4)
links[i].className="sel basket_sel";
else if (links[i].id=="news_1" || links[i].id=="tv_0" || links[i].id == "ls_1" || links[i].id=="ten_0")
links[i].className="sel first";
else {
links[i].className="sel";
}
}else{
if (parentDiv=='news_navilinks' && links[i].id=='news_5')
links[i].className="f1";
else if (parentDiv=='news_navilinks' && links[i].id=='news_7')
links[i].className="rad";
else if (parentDiv=='news_navilinks' && links[i].id=='news_4')
links[i].className="basket";
else if (links[i].id=="news_1" || links[i].id=="tv_0" || links[i].id=="ls_1" || links[i].id=="ten_0")
links[i].className="first";
else
links[i].className="";
}
}
}
}
function ovMarkSelected2(parentDiv,ID)
{
if (links=$(parentDiv)) {
var links=$(parentDiv).getElementsByTagName('a');
for(var i=0; i < links.length; i++)
{
if(links[i].id.indexOf(ID)>-1) {
links[i].className="sel";
}else{
links[i].className="";
}
}
}
}
// ---------------------------------------------------------------------------
// Slideshow
var ovSltarget='targetslide';
var ovSltargetpage='targetpage';
var ovSltargetpreview='targetpreview';
var ovSlstartSlide=2;
var ovSlactSlide=2;
var ovSlslideshow_i=1;
var ovSlstartpreview=0;
var ovSlactpreview=0;
var ovSlprevcount=5;
var ovSlslideNr;
var ovSlpreviewpos;
function ovSlNext(Ressort,ID,Max,Breite)
{
ovSlactSlide += 1;
if (ovSlactSlide>Max+ovSlslideshow_i){ovSlactSlide=ovSlstartSlide;}
ovSlUpdate(Ressort,ID,ovSlactSlide,Max,Breite)
}
function ovSlBack(Ressort,ID,Max,Breite)
{
ovSlactSlide -= 1;
if (ovSlactSlide<ovSlstartSlide){ovSlactSlide=Max+ovSlslideshow_i;}
ovSlUpdate(Ressort,ID,ovSlactSlide,Max,Breite)
}
function ovSlLast(Ressort,ID,Max,Breite)
{
ovSlactSlide=Max+ovSlslideshow_i;
ovSlUpdate(Ressort,ID,ovSlactSlide,Max,Breite)
}
function ovSlFirst(Ressort,ID,Max,Breite)
{
ovSlactSlide=ovSlstartSlide;
ovSlUpdate(Ressort,ID,ovSlactSlide,Max,Breite)
}
function ovSlNextPrev(Pfad,RessortID,Max)
{
ovSlactpreview += ovSlprevcount;
if (ovSlactpreview>Max){ovSlactpreview=ovSlstartpreview;}
ovSlUpdatePreview(Pfad,RessortID,ovSlactpreview,Max)
}
function ovSlBackPrev(Pfad,RessortID,Max)
{
ovSlactpreview -= ovSlprevcount;
if (ovSlactpreview<ovSlstartpreview){ovSlactpreview=ovSlstartpreview;}
ovSlUpdatePreview(Pfad,RessortID,ovSlactpreview,Max)
}
function ovSlUpdatePreview(Ressort,ID,index,Max)
{
ovSlpreviewpos=(710/(Max/index))+10;
var url=Ressort+"?object="+ID+"&index="+index;
var myAjax=new Ajax.Updater(ovSltargetpreview,url,{method:'get',onComplete:ovSlRefreshPreview});
}
function ovSlUpdate(Ressort,ID,slide,Max)
{
ovSlslideNr=slide;
var url=Ressort+"?object="+ID+"&slide="+slide+"&max="+Max;
var myAjax=new Ajax.Updater(ovSltarget,url,{method: 'get',onComplete:ovSlRefresh});
}
function ovSlRefresh()
{
$("slidepg").firstChild.nodeValue=ovSlslideNr-1;
$('blaettern').style.width = $('sld'+(ovSlslideNr-1)+'Breite').value+'px';
$('blaetterntext').style.width = ($('sld'+(ovSlslideNr-1)+'Breite').value-114)+'px';
if (ovAjax.isMSN){
var trackingmsn=$('trackingmsn');
if(trackingmsn){trackingmsn.src=ovSlMsnUrl+"?controlname="+ovSlControlname;}
}else{
ovAjax.SetIVW("101160;ki_slideshow");
}
}
function ovSlRefreshPreview()
{
if (ovAjax.isMSN){
var trackingmsn=$('trackingmsn');
if(trackingmsn){trackingmsn.src=ovSlMsnUrl+"?controlname="+ovSlControlname;}
}else{
ovAjax.SetIVW("101160;ki_slideshow");
}
}
function ovSlDiashowSelected(form)
{
var x=$("ctl00_PlaceHolderContent_object")
x.selectedIndex=-1;
ovToolkit.SubmitForm(form);
}
function ovSlArticleNext(ID,slide)
{
var myAjax=new Ajax.Updater({success:'ovSlideshowWrapper'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=slideshowartikel&slideid='+ID+'&slidepage='+slide,{method:'get',onComplete:ovSlArticleNextRefresh,evalScripts:true });
}
function ovSlArticleNextRefresh()
{
ovAjax.SetIVW("");
}
var ovSlPage = 0;
var ovSlPages = 0;
var ovSlPageMax = 0;
var ovSlPageItemsCount = 5;
var ovSlPageWidth = 850;
var ovSlItemsCount=0;
var ovSlCategory = "";
var ovSlItemsWidth = 850;
function ovSlPaging(direction)
{
ovSlItemsWidth = $('slide_items').getWidth();
if (direction == 1 && $('moreslbtnright').className!='moreslbtnrightinakt'){
if (ovSlItemsCount==0){
ovSlCategory=$('slide_resid').value;
ovSlItemsCount=parseInt($('slide_itemscount').value);
ovSlPages = Math.round((ovSlItemsCount/ovSlPageItemsCount)+0.5)-1;
}
ovSlPage++;
if (ovSlPage<=ovSlPageMax){
new Effect.Move('slide_items',{x:-ovSlPageWidth*ovSlPage,y:10,mode:'absolute',queue:{scope:'slslider'}});
$('moreslbtnleft').className='moreslbtnleft';
}else if (ovSlPage<=ovSlPages){
ovSlPageMax=ovSlPage;
new Ajax.Request(ovAjax.rootURL+"/slideshowpreview?object="+ovSlCategory+"&index="+(ovSlPage*ovSlPageItemsCount+1),{ method: 'get',onComplete:ovSlPagingRefresh,evalScripts:true});
}
if (ovSlPage==ovSlPages)
$('moreslbtnright').className='moreslbtnrightinakt';
}else if (direction == 0){
if (ovSlPage>0){
ovSlPage--;
var ovSlItemsLeft = parseInt($('slide_items').getStyle('left').replace('px',''));
new Effect.Move('slide_items',{x:-ovSlPage*ovSlPageWidth,y:10,mode:'absolute',queue:{scope:'slslider'}});
if (ovSlPage==0){
$('moreslbtnleft').className='moreslbtnleftinakt';
}
$('moreslbtnright').className='moreslbtnright';
}
}
}
function ovSlPagingRefresh(transport)
{
var newResponse=transport.responseText;
if (newResponse.length > 0){
$('slide_items').innerHTML+=newResponse;
$('slide_items').setStyle({width:ovSlItemsWidth+ovSlPageWidth+'px'});
ovSlMoveElement.defer();
$('moreslbtnleft').className='moreslbtnleft';
}
ovAjax.SetIVW("");
}
function ovSlMoveElement()
{
new Effect.Move('slide_items',{x:-ovSlItemsWidth,y:10,mode:'absolute',queue:{scope:'slslider'}});
}
// ---------------------------------------------------------------------------
//Widget:Frage der Woche
function getVotingCookie(name)
{
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}
else begin += 2;
var end = document.cookie.indexOf(";",begin);
if (end == -1) end = dc.length;
return unescape(dc.substring(begin + prefix.length,end));
}
function ovFdwCheck(votingId)
{
var votingCookie = getVotingCookie(votingId+"_voted");
if (votingCookie != null)
var myAjax=new Ajax.Updater({success:'fdw_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetvoting',{method:'get',onComplete:ovFdwNoRefresh,evalScripts:true });
}
function ovFdwBack()
{
ovAjax.SetReloadIcon('fdw_content');
var myAjax=new Ajax.Updater({success:'fdw_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetvoting&r='+(Math.random()*100000),{method:'get',onComplete:ovFdwRefresh,evalScripts:true });
}
function ovFdwResult()
{
ovAjax.SetReloadIcon('fdw_content');
var myAjax=new Ajax.Updater({success:'fdw_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetvoting&Zwischenergebnis=true',{method:'get',onComplete:ovFdwRefresh,evalScripts:true });
}
function ovFdwVote(form)
{
var name;
var value;
for (i=0; i<form.length; i++){
name=form[i].name;
if (name=='antwort'){
if (form[i].type=='checkbox'){
if (form[i].checked) {
if (value != null && value.length > 0){
value += ",";
}else{
value="";
}
value += form[i].value;
}
}else if (form[i].type=='radio'){
if (form[i].checked){
value=form[i].value;
}
}else if (form[i].type=='select-one'){
value=form[i].value;
}
}
}
ovAjax.SetReloadIcon('fdw_content');
var myAjax=new Ajax.Updater({success:'fdw_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetvoting&userAntwort='+value,{method:'get',onComplete:ovFdwRefresh,evalScripts:true });
}
function ovFdwRefresh()
{
ovAjax.SetIVW("21100;ki_fdw_box");
}
function ovFdwNoRefresh()
{}
// ---------------------------------------------------------------------------
//Widget:Community
function ovCoShowThread(BereichID)
{
ovAjax.SetReloadIcon('com_content');
$('com_'+BereichID).className="sel";
var myAjax=new Ajax.Updater({success:'com_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetcommunity&comBereich='+BereichID,{method:'get',onComplete:ovCoRefreshLinks,evalScripts:true});
}
function ovCoShowMore(BereichID,Seite)
{
ovAjax.SetReloadIcon('com_content');
var myAjax=new Ajax.Updater({success:'com_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetcommunity&comBereich='+BereichID+'&comSeite='+Seite,{method:'get',onComplete:ovCoRefreshLinks,evalScripts:true});
}
function ovCoRefreshLinks()
{
var revlink=$('com_revlink');
var ffwlink=$('com_ffwlink');
if ($('com_seite').value==null){ $('com_seite').value=0;}
if ($('com_seite').value==1){
revlink.className='revdis';
revlink.href="javascript:ovAjax.DoNothing();";
}else{
revlink.className='rev';
revlink.href='javascript:ovCoShowMore('+$('com_bereich').value+','+(parseInt($('com_seite').value)-1)+');';
}
if ($('com_seite').value==10 || $('com_rowscount').value/3 <= $('com_seite').value){
ffwlink.className='ffwdis';
ffwlink.href="javascript:ovAjax.DoNothing();";
}else{
ffwlink.className='ffw';
ffwlink.href='javascript:ovCoShowMore('+$('com_bereich').value+','+(parseInt($('com_seite').value)+1)+');';
}
ovAjax.SetIVW("100020;ki_comm_box");
}
// ---------------------------------------------------------------------------
//CommunityWechselboerse
function ovCoWBShowThread(BereichID)
{
ovAjax.SetReloadIcon('com_wb_content');
$('com_wb_'+BereichID).className="sel";
var myAjax=new Ajax.Updater({success:'com_wb_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetcommunitywechselboerse&comBereich='+BereichID,{method:'get',onComplete:ovCoWBRefreshLinks});
}
function ovCoWBShowMore(BereichID,Seite)
{
ovAjax.SetReloadIcon('com_wb_content');
var myAjax=new Ajax.Updater({success:'com_wb_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetcommunitywechselboerse&comBereich='+BereichID+'&comSeite='+Seite,{method:'get',onComplete:ovCoWBRefreshLinks});
}
function ovCoWBRefreshLinks()
{
var revlink=$('com_wb_revlink');
var ffwlink=$('com_wb_ffwlink');
if ($('com_wb_seite').value==null){ $('com_wb_seite').value=0;}
if ($('com_wb_seite').value==1){
revlink.className='revdis';
revlink.href="javascript:ovAjax.DoNothing();";
}else{
revlink.className='rev';
revlink.href='javascript:ovCoWBShowMore('+$('com_wb_bereich').value+','+(parseInt($('com_wb_seite').value)-1)+');';
}
if ($('com_wb_seite').value==6 || $('com_wb_rowscount').value/5 <= $('com_wb_seite').value){
ffwlink.className='ffwdis';
ffwlink.href="javascript:ovAjax.DoNothing();";
}else{
ffwlink.className='ffw';
ffwlink.href='javascript:ovCoWBShowMore('+$('com_wb_bereich').value+','+(parseInt($('com_wb_seite').value)+1)+');';
}
if ($('com_wb_bereich').value == 0) {
ovAjax.ShowElem('postforum_bl1');
ovAjax.ShowElem('seeforum_bl1');
ovAjax.HideElem('postforum_bl2');
ovAjax.HideElem('seeforum_bl2');
ovAjax.HideElem('postforum_bl3');
ovAjax.HideElem('seeforum_bl3');
}
else if ($('com_wb_bereich').value == 1) {
ovAjax.HideElem('postforum_bl1');
ovAjax.HideElem('seeforum_bl1');
ovAjax.ShowElem('postforum_bl2');
ovAjax.ShowElem('seeforum_bl2');
ovAjax.HideElem('postforum_bl3');
ovAjax.HideElem('seeforum_bl3');
}
else {
ovAjax.HideElem('postforum_bl1');
ovAjax.HideElem('seeforum_bl1');
ovAjax.HideElem('postforum_bl2');
ovAjax.HideElem('seeforum_bl2');
ovAjax.ShowElem('postforum_bl3');
ovAjax.ShowElem('seeforum_bl3');
}
ovAjax.SetIVW("100037;ki_comm_tra_box");
}
// ---------------------------------------------------------------------------
//Widget:Wechselboerse
function ovWBShowThread(BereichID)
{
ovAjax.SetReloadIcon('wb_content');
$('wb_'+BereichID).className="sel";
var myAjax=new Ajax.Updater({success:'wb_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetwechselboerse&comBereich='+BereichID+'&comSeite=1',{method:'get',onComplete:ovWBRefreshLinks,evalScripts:true});
}
function ovWBShowMore(BereichID,Seite)
{
ovAjax.SetReloadIcon('wb_content');
var myAjax=new Ajax.Updater({success:'wb_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetwechselboerse&comBereich='+BereichID+'&comSeite='+Seite,{method:'get',onComplete:ovWBRefreshLinks,evalScripts:true});
}
function ovWBRefreshLinks()
{
var revlink=$('wb_revlink');
var ffwlink=$('wb_ffwlink');
if ($('wb_seite').value==null){ $('wb_seite').value=0;}
if ($('wb_seite').value==1){
revlink.className='revdis';
revlink.href="javascript:ovAjax.DoNothing();";
}else{
revlink.className='rev';
revlink.href='javascript:ovWBShowMore('+$('wb_bereich').value+','+(parseInt($('wb_seite').value)-1)+');';
}
if ($('wb_rowscount').value/5 <= $('wb_seite').value){
ffwlink.className='ffwdis';
ffwlink.href="javascript:ovAjax.DoNothing();";
}else{
ffwlink.className='ffw';
ffwlink.href='javascript:ovWBShowMore('+$('wb_bereich').value+','+(parseInt($('wb_seite').value)+1)+');';
}
if ($('wb_bereich').value == '0') {
ovAjax.ShowElem('wb_bl1');
ovAjax.HideElem('wb_bl2');
ovAjax.HideElem('wb_bl3');
ovAjax.HideElem('wb_seeforum_bl1');
ovAjax.HideElem('wb_seeforum_bl2');
ovAjax.HideElem('wb_seeforum_bl3');
$('extra').setStyle({height:'22px'});
$('wb_revlink').innerHTML = 'vorherige Transfers';
$('wb_ffwlink').innerHTML = 'weitere Transfers';
}
else if ($('wb_bereich').value == '1') {
ovAjax.HideElem('wb_bl1');
ovAjax.ShowElem('wb_bl2');
ovAjax.HideElem('wb_bl3');
ovAjax.HideElem('wb_seeforum_bl1');
ovAjax.HideElem('wb_seeforum_bl2');
ovAjax.HideElem('wb_seeforum_bl3');
$('extra').setStyle({height:'22px'});
$('wb_revlink').innerHTML = 'vorherige Transfers';
$('wb_ffwlink').innerHTML = 'weitere Transfers';
}
else if ($('wb_bereich').value == '2') {
ovAjax.HideElem('wb_bl1');
ovAjax.HideElem('wb_bl2');
ovAjax.ShowElem('wb_bl3');
ovAjax.HideElem('wb_seeforum_bl1');
ovAjax.HideElem('wb_seeforum_bl2');
ovAjax.HideElem('wb_seeforum_bl3');
$('extra').setStyle({height:'22px'});
$('wb_revlink').innerHTML = 'vorherige Transfers';
$('wb_ffwlink').innerHTML = 'weitere Transfers';
}
else {
ovAjax.HideElem('wb_bl1');
ovAjax.HideElem('wb_bl2');
ovAjax.HideElem('wb_bl3');
ovAjax.ShowElem('wb_seeforum_bl1');
ovAjax.ShowElem('wb_seeforum_bl2');
ovAjax.ShowElem('wb_seeforum_bl3');
$('extra').setStyle({height:'65px'});
$('wb_revlink').innerHTML = 'vorherige Forenbeitr&auml;ge';
$('wb_ffwlink').innerHTML = 'weitere Forenbeitr&auml;ge';
}
ovAjax.SetIVW("3660;fu_bl2bl_tra_box");
}
// ---------------------------------------------------------------------------
//Widget:TVProgramm
var ovTvDate;
var ovTvAddDays;
function ovTvShow(Year,Month,Day,AddDays)
{
ovTvDate=Day+'-'+Month+'-'+Year;
ovTvAddDays=AddDays;
ovAjax.SetReloadIcon('tvprogramm_content');
var tagbtn=$('tv_'+AddDays);
if(AddDays==0){
tagbtn.className="sel first";
}else{
tagbtn.className="sel";
}
var myAjax=new Ajax.Updater({success:'tvprogramm_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgettv&programmdate='+ovTvDate+'&rurl='+encodeURI(window.location.href),{method:'get',onComplete:ovTvRefreshLinks,evalScripts:true});
}
function ovTvShowMore(SendungID,Flag)
{
ovAjax.SetReloadIcon('tvprogramm_content');
var myAjax=new Ajax.Updater({success:'tvprogramm_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgettv&programmdate='+ovTvDate+'&sendungid='+SendungID+'&flag='+Flag+'&rurl='+encodeURI(window.location.href),{method:'get',onComplete:ovTvRefreshLinks,evalScripts:true});
}
function ovTvRefreshLinks()
{
var revlink=$('tv_revlink');
var ffwlink=$('tv_ffwlink');
if ($('tv_first_tbid').value==1){
revlink.className='revdis';
revlink.href="javascript:ovAjax.DoNothing();";
}else{
revlink.className='rev';
revlink.href="javascript:ovTvShowMore("+$('tv_first_sendungid').value+",0);";
}
if ($('tv_last_tbid').value==$('tv_max_tbid').value){
ffwlink.className='ffwdis';
ffwlink.href="javascript:ovAjax.DoNothing();";
}else{
ffwlink.className='ffw';
ffwlink.href="javascript:ovTvShowMore("+$('tv_last_sendungid').value+",1);";
}
$('tv_uebersicht').href=ovAjax.home+'/news/live-news/tvprogramm/'+ovTvDate+'/'+$('tv_programmtime').value+'/tvprogramm.html';
if (ovAjax.isMSN){
ovAjax.SetIVWURL($('tv_msn_ivw').value,"");
}else{
ovAjax.SetIVW('408030;ki_tv_programm_box');
}
}
// ---------------------------------------------------------------------------
//Widget:Kolumnen
function ovKolShowMore(page)
{
ovAjax.SetReloadIcon('kolumniestenhalf_content');
var myAjax=new Ajax.Updater({success:'kolumniestenhalf_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=kolumnen&pageIndex='+page,{method:'get',onComplete:ovKolRefresh,evalScripts:true});
}
function ovKolRefresh()
{
if (ovAjax.isMSN){
ovAjax.SetIVWURL($('tv_msn_ivw').value,"");
}else{
ovAjax.SetIVW('408030;ki_tv_programm_box');
}
}
// ---------------------------------------------------------------------------
//Widget:Schlagzeilen
var ovSzKat;
function ovSzShow(KatID)
{
ovSzKat=KatID;
ovAjax.SetReloadIcon('newsrepeater');
var newsbtn=$('news_'+KatID);
if (KatID==5){
newsbtn.className="f1_sel";
}else if (KatID==7){
newsbtn.className="rad_sel";
}else if (KatID==4){
newsbtn.className="sel basket_sel";
}else if (KatID==1){
newsbtn.className="sel first";
}else{
newsbtn.className="sel";
}
var myAjax=new Ajax.Updater({success:'newsrepeater'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetschlagzeilen&szkat='+KatID+'&rurl='+encodeURI(window.location.href),{method:'get',onComplete:ovSzRefreshLinks});
}
function ovSzShowMore(DokID,Flag,KatID)
{
ovSzKat=KatID;
ovAjax.SetReloadIcon('newsrepeater');
var myAjax=new Ajax.Updater({success:'newsrepeater'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetschlagzeilen&szkat='+KatID+'&szdokid='+DokID+'&szflag='+Flag+'&rurl='+encodeURI(window.location.href),{method:'get',onComplete:ovSzRefreshLinks,evalScripts:true});
}
function ovSzRefreshLinks()
{
if ($('sz_first_tbid').value==$('sz_max_tbid').value){
ovAjax.ShowElem('sz_revdis');
ovAjax.HideElem('sz_rev');
}else{
ovAjax.ShowElem('sz_rev');
ovAjax.HideElem('sz_revdis');
}
if ($('sz_last_tbid').value==1){
ovAjax.HideElem('sz_ffw');
}else{
ovAjax.ShowElem('sz_ffw');
}
$('sz_revlink').href="javascript:ovSzShowMore("+$('sz_first_dokid').value+",1,"+ovSzKat+");";
$('sz_ffw').href="javascript:ovSzShowMore("+$('sz_last_dokid').value+",0,"+ovSzKat+");";
var rsstext=$('sz_rsstext');
var rssFB=$('rsstooltip_sz_fb');
var rssF1=$('rsstooltip_sz_f1');
var rssRad=$('rsstooltip_sz_rad');
var rssEH=$('rsstooltip_sz_eh');
var rssBB=$('rsstooltip_sz_bb');
var rssHB=$('rsstooltip_sz_hb');
var rssTennis=$('rsstooltip_sz_tennis');
var rssAlle=$('rsstooltip_sz_alle');
var rssFBGoogle=$('rsstooltip_sz_google_fb');
var rssF1Google=$('rsstooltip_sz_google_f1');
var rssRadGoogle=$('rsstooltip_sz_google_rad');
var rssEHGoogle=$('rsstooltip_sz_google_eh');
var rssBBGoogle=$('rsstooltip_sz_google_bb');
var rssHBGoogle=$('rsstooltip_sz_google_hb');
var rssTennisGoogle=$('rsstooltip_sz_google_tennis');
var rssAlleGoogle=$('rsstooltip_sz_google_alle');
rssFB.className="rsstt_rss rsstooltip_item_hidden";
rssF1.className="rsstt_rss rsstooltip_item_hidden";
rssRad.className="rsstt_rss rsstooltip_item_hidden";
rssEH.className="rsstt_rss rsstooltip_item_hidden";
rssBB.className="rsstt_rss rsstooltip_item_hidden";
rssHB.className="rsstt_rss rsstooltip_item_hidden";
rssTennis.className="rsstt_rss rsstooltip_item_hidden";
rssAlle.className="rsstt_rss rsstooltip_item_hidden";
rssFBGoogle.className="rsstt_igoogle rsstooltip_item_hidden";
rssF1Google.className="rsstt_igoogle rsstooltip_item_hidden";
rssRadGoogle.className="rsstt_igoogle rsstooltip_item_hidden";
rssEHGoogle.className="rsstt_igoogle rsstooltip_item_hidden";
rssBBGoogle.className="rsstt_igoogle rsstooltip_item_hidden";
rssHBGoogle.className="rsstt_igoogle rsstooltip_item_hidden";
rssTennisGoogle.className="rsstt_igoogle rsstooltip_item_hidden";
rssAlleGoogle.className="rsstt_igoogle rsstooltip_item_hidden";
var szIVWCode;
if (ovSzKat==0){
szIVWCode="2330;fu_news_index_box";
if (rsstext != null) { rsstext.innerHTML="Alle Sportnews per RSS-Feed"; }
rssAlle.className="rsstt_rss";
rssAlleGoogle.className="rsstt_igoogle";
$('sz_uebersicht').href=ovAjax.home+"/news/live-news/schlagzeilen/schlagzeilen_fussball.html";
}else if (ovSzKat==2){
szIVWCode="37120;ms_handball_sbox";
if (rsstext != null) { rsstext.innerHTML="Alle Handball News per RSS-Feed"; }
rssHB.className="rsstt_rss";
rssHBGoogle.className="rsstt_igoogle";
$('sz_uebersicht').href=ovAjax.home+"/news/live-news/schlagzeilen/schlagzeilen_handball.html";
}else if (ovSzKat==3){
szIVWCode="31120;ms_eishockey_sbox";
if (rsstext != null) { rsstext.innerHTML="Alle Eishockey News per RSS-Feed"; }
rssEH.className="rsstt_rss";
rssEHGoogle.className="rsstt_igoogle";
$('sz_uebersicht').href=ovAjax.home+"/news/live-news/schlagzeilen/schlagzeilen_eishockey.html";
}else if (ovSzKat==4){
szIVWCode="36120;ms_basketball_sbox";
if (rsstext != null) { rsstext.innerHTML="Alle Basketball News per RSS-Feed"; }
rssBB.className="rsstt_rss";
rssBBGoogle.className="rsstt_igoogle";
$('sz_uebersicht').href=ovAjax.home+"/news/live-news/schlagzeilen/schlagzeilen_basketball.html";
}else if (ovSzKat==5){
szIVWCode="22120;ms_formel1_sbox";
if (rsstext != null) { rsstext.innerHTML="Alle Formel1 News per RSS-Feed"; }
rssF1.className="rsstt_rss";
rssF1Google.className="rsstt_igoogle";
$('sz_uebersicht').href=ovAjax.home+"/news/live-news/schlagzeilen/schlagzeilen_formel1.html";
}else if (ovSzKat==8){
szIVWCode="39120;ms_tennis_sbox";
if (rsstext != null) { rsstext.innerHTML="Alle Tennis News per RSS-Feed"; }
rssTennis.className="rsstt_rss";
rssTennisGoogle.className="rsstt_igoogle";
$('sz_uebersicht').href=ovAjax.home+"/news/live-news/schlagzeilen/schlagzeilen_tennis.html";
}else if (ovSzKat==7){
szIVWCode="33020;ms_radsport_sbox";
if (rsstext != null) { rsstext.innerHTML="Alle Rad News per RSS-Feed"; }
rssRad.className="rsstt_rss";
rssRadGoogle.className="rsstt_igoogle";
$('sz_uebersicht').href=ovAjax.home+"/news/live-news/schlagzeilen/schlagzeilen_radsport.html";
}else{
szIVWCode="2330;fu_news_index_box";
if (rsstext != null) { rsstext.innerHTML="Alle Fu&szlig;ball News per RSS-Feed"; }
rssFB.className="rsstt_rss";
rssFBGoogle.className="rsstt_igoogle";
$('sz_uebersicht').href=ovAjax.home+"/news/live-news/schlagzeilen/schlagzeilen_alle.html";
}
if (ovAjax.isMSN) {
ovAjax.SetIVWURL($('sz_msn_ivw').value,"");
} else {
ovAjax.SetIVW(szIVWCode);
}
}
// ---------------------------------------------------------------------------
//Widget:Livescores
var ovLsKat;
var ovLsSppa;
var ovLsFlag;
function ovLsShow(ID)
{
ovAjax.SetReloadIcon('livescores_content');
var lsbtn=$('ls_'+ID);
if (lsbtn != null) {
if (ID==1) {lsbtn.className="sel first";}
else {lsbtn.className="sel";}
}
ovLsKat=ID;
ovLsSppa=null;
ovLsFlag=null;
var myAjax=new Ajax.Updater({success:'livescores_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetlivescores&lsKat='+ID+'&rurl='+encodeURI(window.location.href),{method:'get',onComplete:ovLsRefreshLinks,evalScripts:true});
}
function ovLsShowMore(SppID,Flag,ID)
{
ovLsKat=ID;
ovLsFlag=Flag;
ovLsSppa=SppID;
ovAjax.SetReloadIcon('livescores_content');
var myAjax=new Ajax.Updater({success:'livescores_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetlivescores&lsKat='+ovLsKat+'&lssppid='+SppID+'&lsflag='+Flag+'&rurl='+encodeURI(window.location.href),{method:'get',onComplete:ovLsRefreshLinks,evalScripts:true});
}
function ovLsRefreshLinks()
{
$('ls_rev').href="javascript:ovLsShowMore("+$('ls_first_sppid').value+",0,"+ovLsKat+");";
$('ls_ffw').href="javascript:ovLsShowMore("+$('ls_last_sppid').value+",1,"+ovLsKat+");";
if ($('ls_first_tbid').value==1){
ovAjax.HideElem('ls_rev');
}else{
ovAjax.ShowElem('ls_rev');
}
if ($('ls_last_tbid').value==$('ls_max_tbid').value){
ovAjax.HideElem('ls_ffw');
}else{
ovAjax.ShowElem('ls_ffw');
}
if ($('ls_islive').value=='0'){
ovAjax.HideElem('ls_goicon');
}else{
ovAjax.ShowElem('ls_goicon');
}
var uebersicht=$('ls_uebersicht');
if (ovLsKat ==3) uebersicht.href=ovAjax.home+"/news/eishockey/live/livescores_eishockey.html";
else if (ovLsKat==2) uebersicht.href=ovAjax.home+"/news/handball/live/livescores_handball.html";
else if (ovLsKat==4) uebersicht.href=ovAjax.home+"/news/basketball/live/livescores_basketball.html";
else if (ovLsKat==8) uebersicht.href=ovAjax.home+"/news/tennis/live/livescores_tennis.html";
else uebersicht.href=ovAjax.home+"/news/live-news/livescores/livescores_fussball.html";
var match=$('ls_plus_matchkalender');
if (ovLsKat==2) match.href=ovAjax.home+"/news/handball/matchkalender/matchkalender_handball.html";
else if (ovLsKat==3) match.href=ovAjax.home+"/news/eishockey/matchkalender/matchkalender_eishockey.html";
else if (ovLsKat==4) match.href=ovAjax.home+"/news/basketball/matchkalender/matchkalender_basketball.html";
else if (ovLsKat==8) match.href=ovAjax.home+"/news/tennis/matchkalender/matchkalender_tennis.html";
else match.href=ovAjax.home+"/news/live-news/matchkalender.html";
//	if (ovLsKat==8) {$('livescores_content').setStyle({height:'250px'})}
//	else {$('livescores_content').setStyle({height:'201px'})}
var lsIVWCode;
if (ovLsKat==0) lsIVWCode="2530;fu_live_scores_box";
else if (ovLsKat==2) lsIVWCode="37130;ms_handball_lsbox";
else if (ovLsKat==3) lsIVWCode="31130;ms_eishockey_lsbox";
else if (ovLsKat==4) lsIVWCode="36130;ms_basketball_lsbox";
else if (ovLsKat==8) lsIVWCode="39130;ms_tennis_lsbox";
else lsIVWCode="2530;fu_live_scores_box";
if (ovAjax.isMSN){
ovAjax.SetIVWURL($('ls_msn_ivw').value,"");
}else{
ovAjax.SetIVW(lsIVWCode);
}
}
function ovLsRefreshContent(ID)
{
if (ovLsSppa==null){
if (ovLsKat==null) {ovLsKat=ID;}
ovLsShow(ovLsKat);
}else{
ovLsShowMore(ovLsSppa,ovLsFlag,ovLsKat);
}
}
// ---------------------------------------------------------------------------
//Widget:Tennis Weltrangliste
var ovTwListe;
function ovTwShow(ID)
{
ovTwListe=ID;
ovAjax.SetReloadIcon('tennis_content');
var myAjax=new Ajax.Updater({success:'tennis_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgettennis&liste='+ID,{method:'get',onComplete:ovTwRefresh});
}
function ovTwShowMore(ErstePlatzierung,Flag,ID)
{
ovTwListe=ID;
ovAjax.SetReloadIcon('tennis_content');
var myAjax=new Ajax.Updater({success:'tennis_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgettennis&liste='+ID+'&ersteplatzierung='+ErstePlatzierung+'&Flag='+Flag,{method:'get',onComplete:ovTwRefresh});
}
function ovTwRefresh()
{
var ersterPlatz=parseInt($('ten_ersteplatzierung').value);
$('ten_revlink').href="javascript:ovTwShowMore("+ersterPlatz+",1,"+ovTwListe+");";
$('ten_ffwlink').href="javascript:ovTwShowMore("+ersterPlatz+",0,"+ovTwListe+");";
if (ersterPlatz==1){
ovAjax.ShowElem('ten_revdis');
ovAjax.HideElem('ten_rev');
}else{
ovAjax.ShowElem('ten_rev');
ovAjax.HideElem('ten_revdis');
}
if ($('ten_isLetzeRow').value==1){
ovAjax.HideElem('ten_ffwlink');
}else{
ovAjax.ShowElem('ten_ffwlink');
}
var ten_uebersicht=$('ten_uebersicht');
var url;
url=ten_uebersicht.href.replace('/liste/0/','/liste/'+ovTwListe+'/');
url=url.replace('/liste/1/','/liste/'+ovTwListe+'/');
url=url.replace('/liste/2/','/liste/'+ovTwListe+'/');
url=url.replace('/liste/3/','/liste/'+ovTwListe+'/');
ten_uebersicht.href=url;
if (ovTwListe==2 || ovTwListe==3) { ten_uebersicht.innerHTML='Zur Gesamtjahreswertung'; }
else { ten_uebersicht.innerHTML='Zur Gesamtweltrangliste'; }
ovAjax.SetIVW('39140;ms_tennis_wbox');
}
// ---------------------------------------------------------------------------
//LiveTicker
var ovLtModus;
var ovLtSppaID;
var ovLtPro7;
function ovLtShowHighlights(Modus,SppID)
{
var textticker=$('ajaxlivetextticker');
ovLtModus=Modus;
ovLtSppaID=SppID;
textticker.innerHTML += '<div class="ajaxreload"><span class="backtrans" id="arbacktrans"></span><span class="backtext" id="backtext"><\/span><\/div>';
if (parseInt($('ajaxlivetextticker').getHeight())<260)
{$('backtext').setStyle({top:parseInt(parseInt($('ajaxlivetextticker').getHeight())/2)+'px'});}
{$('arbacktrans').setStyle({height:$('ajaxlivetextticker').getHeight()+'px'});}
var myAjax=new Ajax.Updater({ success: 'ajaxlivetextticker' },ovAjax.rootURL+'/rkajax/livetextticker/?object='+ SppID +'&modus='+Modus,{method:'get',onComplete:ovLtRefreshHighlights});
}
function ovLtRefreshHighlights()
{
var Modus;
var HightlightsLink=$('lthighlights');
if (parseInt(ovLtModus)==1){
Modus=0;
HightlightsLink.className="ovexpand";
HightlightsLink.innerHTML='Live-Kommentar';
}else{
Modus=1;
HightlightsLink.className="minimize";
HightlightsLink.innerHTML='Highlights';
}
HightlightsLink.href='javascript:ovLtShowHighlights('+Modus+','+ovLtSppaID+');';
var ivwCode=$('tickerivwcode').value;
if (ivwCode != null && ivwCode.length > 0)
ovAjax.SetIVW(ivwCode);
}
function ovLtShowTicker(url,SppID,page,isProSieben)
{
ovLtSppaID=SppID;
if ($('banner') != null)
{$('banner').hide();}
var liveticker=$('ajaxreloadcontent');
liveticker.style.display='block';
$('backtrans').setStyle({height:$('ltcontent').getHeight()+'px'});
ovLtPro7 = isProSieben;
if(parseInt(page)==1) {
url += 'livematch_content/?object='+ SppID;
}else{
url += 'livekonferenz_content/?object='+ SppID;
}
var myAjax=new Ajax.Updater({ success: 'ajaxliveticker' },url,{ method:'get',onComplete:ovLtRefreshTicker,evalScripts:true });
}
function ovLtRefreshTicker()
{
$('ajaxreloadcontent').hide();
var ivwCode=$('tickerivwcode').value;
if (ivwCode != null && ivwCode.length > 0){
if (ovLtPro7 != null && ovLtPro7 > 0){
ovAjax.SetIVWURL("http://pro7.ivwbox.de/cgi-bin/ivw/CP/",ivwCode);
}else{
ovAjax.SetIVW(ivwCode);
}
}
}
// ---------------------------------------------------------------------------
//TopSpieler
var ovTspAlle;
var ovTspLigaId;
function ovTspShow(allTopSpieler)
{
ovTspAlle=allTopSpieler;
ovTspLigaId=$('topspieler_ligaID').value;
var tspVereinsid=$('topspieler_vereinsID').value;
var tspSpieltag=$('topspieler_spieltag').value;
ovAjax.SetReloadIcon('topspieler_content');
var myAjax=new Ajax.Updater('topspieler_content',ovAjax.rootURL+'/rkajax/topspieler_content/?alleTopSpieler='+allTopSpieler+'&object='+tspVereinsid+'&liga='+ovTspLigaId+'&spieltag='+tspSpieltag,{method:'get',onComplete:ovTspRefresh});
}
function ovTspRefresh()
{
var tspExpand=$('topspieler_expand');
if(ovTspAlle==1){
tspExpand.innerHTML='Top5';
tspExpand.className='minimize';
tspExpand.href='javascript:ovTspShow(0);';
}else{
tspExpand.innerHTML='alle Topspieler';
tspExpand.className='ovexpand';
tspExpand.href='javascript:ovTspShow(1);';
}
if (ovTspLigaId==2)
ovAjax.SetIVW("4851;fu_2_bl_notenbeste_detail");
else
ovAjax.SetIVW("3851;fu_bl_notenbeste_detail");
}
// ---------------------------------------------------------------------------
//Torschuetzen
var ovTsAlle;
var ovTsLigaid;
var ovTsIvwLigaid;
function ovTsShow(allTorschuetzen)
{
ovTsAlle=allTorschuetzen;
ovTsLigaid=$('torschuetzen_ligaID').value;
ovTsIvwLigaid= $('torschuetzen_ivw_ligaID').value;
var tsVereinsid=$('torschuetzen_vereinsID').value;
ovAjax.SetReloadIcon('torschuetzen_content');
var myAjax=new Ajax.Updater('torschuetzen_content',ovAjax.rootURL+'/rkajax/torschuetzen_content/?alleTorschuetzen='+allTorschuetzen+'&object='+tsVereinsid+'&liga='+ovTsLigaid,{method:'get',onComplete:ovTsRefresh});
}
function ovTsRefresh()
{
var tsExpand=$('torschuetzen_expand');
if(ovTsAlle==1){
tsExpand.innerHTML='Top5';
tsExpand.className='minimize';
tsExpand.href='javascript:ovTsShow(0);';
}else{
tsExpand.innerHTML='alle Torsch&uuml;tzen';
tsExpand.className='expand';
tsExpand.href='javascript:ovTsShow(1);';
}
if (ovTsIvwLigaid==4)
ovAjax.SetIVW("8110;fu_int_torjaeger_detail");
else if (ovTsIvwLigaid==3)
ovAjax.SetIVW("5110;fu_rl_torjaeger_detail");
else if (ovTsIvwLigaid==2)
ovAjax.SetIVW("4801;fu_2_bl_torjaeger_detail");
else if (ovTsIvwLigaid==5)
ovAjax.SetIVW("4801;fu_3_bl_torjaeger_detail");
else
ovAjax.SetIVW("3801;fu_bl_torjaeger_detail");
}
// ---------------------------------------------------------------------------
//Widget:Shop
var ovSaIndex;
function ovSaShow(Index)
{
ovSaIndex=Index;
ovAjax.SetReloadIcon('shopausgaben_content');
$('shopausgaben_'+Index).className="sel";
var myAjax=new Ajax.Updater({success:'shopausgaben_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetshop&boxindex='+Index,{method:'get',onComplete:ovSaRefreshLinks});
}
function ovSaShowMore(ArtikelID,Flag,Index)
{
ovSaIndex=Index;
ovAjax.SetReloadIcon('shopausgaben_content');
var myAjax=new Ajax.Updater({success:'shopausgaben_content'},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetshop&boxindex='+Index+'&ausgabenid='+ArtikelID+'&flag='+Flag,{method:'get',onComplete:ovSaRefreshLinks,evalScripts:true});
}
function ovSaRefreshLinks()
{
var saRevspan=$('shopausgaben_revspan');
var saRevlink=$('shopausgaben_revlink');
var saFfw=$('shopausgaben_ffw');
var currArtikelID=$('shopausgaben_curr_artikelid').value;
if ($('isfirstartikel').value==1){
ovAjax.ShowElem('shopausgaben_revdis');
ovAjax.HideElem('shopausgaben_rev');
}else{
ovAjax.ShowElem('shopausgaben_rev');
ovAjax.HideElem('shopausgaben_revdis');
}
if ($('islastartikel').value==1) {
ovAjax.HideElem('shopausgaben_ffw');
}else{
ovAjax.ShowElem('shopausgaben_ffw');
}
$('shopausgaben_revlink').href="javascript:ovSaShowMore("+currArtikelID+",1,"+ovSaIndex+");";
$('shopausgaben_ffw').href="javascript:ovSaShowMore("+currArtikelID+",0,"+ovSaIndex+");";
var saWarenkorb=$('shopausgaben_warenkorblink');
if (ovSaIndex==2){
saWarenkorb.href=ovAjax.home+"/abo-shop/abonnement/spartikel/364453";
saWarenkorb.innerHTML="zur Abobestellung";
saRevspan.innerHTML="vorheriges Abo";
saRevlink.innerHTML="vorheriges Abo";
saFfw.innerHTML="weitere Abos";
}else if (ovSaIndex==3){
saWarenkorb.href=ovAjax.home+"/abo-shop/e-paper/spartikel/364525/";
saWarenkorb.innerHTML="zur e-Paperbestellung";
saRevspan.innerHTML="vorheriges e-Paper";
saRevlink.innerHTML="vorheriges e-Paper";
saFfw.innerHTML="weitere e-Paper";
}else{
saWarenkorb.href=ovAjax.shopHome+"/kicker/heftbestellung";
saWarenkorb.innerHTML="zur Einzelheftbestellung";
saRevspan.innerHTML="vorherige Ausgabe";
saRevlink.innerHTML="vorherige Ausgabe";
saFfw.innerHTML="weitere Ausgaben";
}
var IVWCode="2330;fu_news_index_box";
if (ovSaIndex==2) {IVWCode="2330;fu_news_index_box"; }
else if (ovSaIndex==3) { IVWCode="37120;ms_handball_sbox"; }
ovAjax.SetIVW(IVWCode);
}
// ---------------------------------------------------------------------------
//Widget:Video
var isJunior = false;
function ovViShow(action,videoid,isjunior)
{
isJunior = isjunior;
$('videoMovie').innerHTML="";
if (isJunior && new Boolean(isJunior) == true) {
new Ajax.Request(ovAjax.rootURL+"/rkajax/junioren/ajax.ashx?ajaxtype=widgetvideo&videoid="+videoid+"&action="+action,{ method: 'get',onSuccess:ovViRefresh});
}
else {
new Ajax.Request(ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=widgetvideo&videoid="+videoid+"&action="+action,{ method: 'get',onSuccess:ovViRefresh});
}
}
function ovViRefresh(transport)
{
var newResponse=transport.responseText;
if (newResponse.length > 0){
parts=newResponse.split('|');
$('vhlink1').href=parts[0];
$('vhlink2').href=parts[0];
$('vhbild1').src=parts[1];
$('vhlastvis').href="javascript:ovViShow(0,"+parts[5]+","+isJunior+")";
$('vhnextvis').href="javascript:ovViShow(1,"+parts[5]+","+isJunior+")";
$('vhteaser').innerHTML=parts[6];
$('vhteaser').href=parts[2];
$('vhtooltip').onmouseover = new Function("return ddrivetip('<h3>Videoinfo</h3><p>" + parts[7] + "</p>',250);");
$('vhimgsmall1').src = parts[8];
$('vhimgsmall2').src = parts[9];
$('vhimgsmall3').src = parts[10];
$('video1').onmouseover = new Function("$('video1').style.border = 'solid 1px red';$('teasersmall').style.visibility = 'visible';$('teasersmall').innerHTML = '" + parts[11] + "';");
$('video2').onmouseover = new Function("$('video2').style.border = 'solid 1px red';$('teasersmall').style.visibility = 'visible';$('teasersmall').innerHTML = '" + parts[12] + "';");
$('video3').onmouseover = new Function("$('video3').style.border = 'solid 1px red';$('teasersmall').style.visibility = 'visible';$('teasersmall').innerHTML = '" + parts[13] + "';");
$('vhlinksmall1').href = parts[14];
$('vhlinksmall2').href = parts[15];
$('vhlinksmall3').href = parts[16];
$('vhtooltip').innerHTML = parts[17];
if (parseInt(parts[3])==1) {
ovAjax.ShowElem('vhnextvis');
ovAjax.HideElem('vhnextdis');
}else{
ovAjax.ShowElem('vhnextdis');
ovAjax.HideElem('vhnextvis');
}
if (parseInt(parts[4])==1) {
ovAjax.ShowElem('vhlastvis');
ovAjax.HideElem('vhlastdis');
}else{
ovAjax.ShowElem('vhlastdis');
ovAjax.HideElem('vhlastvis');
}
ovViBanner(parts[18]);
}
ovAjax.SetIVW("40030;ki_tv_box");
}
function ovViBanner(levelid)
{
var hvb = $('halfvideoboxbanner');
if (levelid.length > 0){
levelid = levelid.replace("%","_");
$('halfvideobox').className='halfvideoboxdark';
$("halfvideobox").style.backgroundImage = "url(http://a.banner.t-online.de/apps/244/Ad2801908St3Sz168Sq4105985V0Id2/ad-hp-player_z_"+levelid+".gif)"
hvb.innerHTML = '<a target="_blank" href="http://im.banner.t-online.de/?adlink|3.0|784|1615757|1|16|AdId=4023207;BnId=1;link=http://ad-emea.doubleclick.net/clk;222841634;46605661;f?http://www.sky.de/web/cms/de/sport-mediathek.jsp?wkz=WDKL02"><img src="http://a.banner.t-online.de/apps/244/Ad2801908St3Sz168Sq4105985V0Id2/ad-hp-player_z_banner_'+levelid+'.gif" alt="" /></a>';
hvb.innerHTML += '<a href="http://im.banner.t-online.de/adlink/3.0/784/2440256/0/16/ADTECH" target="_blank"><img src="http://im.banner.t-online.de/adserv/3.0/784/2440256/0/16/ADTECH" border="0" height="1" width="1"></a>';
hvb.style.display = "block";
}else{
$('halfvideobox').className='';
$("halfvideobox").style.backgroundImage = "none";
hvb.innerHTML = "";
hvb.style.display = "none";
}
}
// ---------------------------------------------------------------------------*
//Video-Bar
function ovVibShow(site,isJunioren)
{
if (isJunioren && new Boolean(isJunioren) == true) {
var myAjax=new Ajax.Updater("vidbar",ovAjax.rootURL+"/rkajax/junioren/ajax.ashx?ajaxtype=widgetvideobar&pageIndex="+site,{ method: 'get',onSuccess:ovVibRefresh});
}
else {
var myAjax=new Ajax.Updater("vidbar",ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=widgetvideobar&pageIndex="+site,{ method: 'get',onSuccess:ovVibRefresh});
}
}
function ovVibRefresh()
{
ovAjax.SetIVW("40030;ki_tv_box");
}
// ---------------------------------------------------------------------------
//VideoRessort-Bar
var ovViPage = 0;
var ovViPages = 0;
var ovViPageMax = 0;
var ovViPageItemsCount = 5;
var ovViPageWidth = 850;
var ovViItemsCount=0;
var ovViCategory = "news";
var ovViItemsWidth = 850;
function ovVirPaging(direction)
{
ovViItemsWidth = $('video_items').getWidth();
if (direction == 1 && $('moreslbtnright').className!='moreslbtnrightinakt'){
if (ovViItemsCount==0){
ovViItemsCount=parseInt($('video_itemscount').value);
ovViPages = Math.round((ovViItemsCount/ovViPageItemsCount)+0.5)-1;
}
ovViPage++;
if (ovViPage<=ovViPageMax){
new Effect.Move('video_items',{x:-ovViPageWidth*ovViPage,y:10,mode:'absolute',queue:{scope:'vidslider'}});
$('moreslbtnleft').className='moreslbtnleft';
}else if (ovViPage<=ovViPages){
ovViPageMax=ovViPage;
new Ajax.Request(ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=videoressortbar&videocategory="+ovViCategory+"&index="+(ovViPage*ovViPageItemsCount+1),{ method: 'get',onComplete:ovVirPagingRefresh,evalScripts:true});
}
if (ovViPage==ovViPages)
$('moreslbtnright').className='moreslbtnrightinakt';
}else if (direction == 0){
if (ovViPage>0){
ovViPage--;
var ovViItemsLeft = parseInt($('video_items').getStyle('left').replace('px',''));
new Effect.Move('video_items',{x:-ovViPage*ovViPageWidth,y:10,mode:'absolute',queue:{scope:'vidslider'}});
if (ovViPage==0){
$('moreslbtnleft').className='moreslbtnleftinakt';
}
$('moreslbtnright').className='moreslbtnright';
}
}
}
function ovVirShow(cat)
{
ovViCategory = cat;
var myAjax=new Ajax.Updater("video_items",ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=videoressortbar&videocategory="+cat,{ method: 'get',onComplete:ovViCatRefresh,evalScripts:true});
}
function ovViCatRefresh()
{
ovViItemsCount=0;
ovViPage=0;
ovViPageMax=0;
$('video_items').setStyle({width:ovViPageWidth+'px'});
$('video_items').setStyle({left:'0px'});
$('moreslbtnleft').className='moreslbtnleftinakt';
$('moreslbtnright').className='moreslbtnright';
if (parseInt($('video_items').value)<=ovViMPageItemsCount)
$('moreslbtnright').className='moreslbtnrightinakt';
else
$('moreslbtnright').className='moreslbtnright';
ovVirRefresh();
}
function ovVirPagingRefresh(transport)
{
var newResponse=transport.responseText;
if (newResponse.length > 0){
$('video_items').innerHTML+=newResponse;
$('video_items').setStyle({width:ovViItemsWidth+ovViPageWidth+'px'});
ovViMoveElement.defer();
$('moreslbtnleft').className='moreslbtnleft';
}
ovVirRefresh();
}
function ovViMoveElement()
{
new Effect.Move('video_items',{x:-ovViItemsWidth,y:10,mode:'absolute',queue:{scope:'vidslider'}});
}
function ovVirRefresh()
{
ovAjax.SetIVW("40030;ki_tv_box");
}
// ---------------------------------------------------------------------------
//VideoRessort-More
var ovViMPage = 0;
var ovViMPages = 0;
var ovViMPageMax = 0;
var ovViMPageItemsCount = 5;
var ovViMPageWidth = 850;
var ovViMItemsCount=0;
var ovViMCategory = "news";
var ovViMCeId;
var ovViMItemsWidth = 850;
function ovViLoadMore(container,videoid)
{
ovViMCeId = videoid;
var myAjax=new Ajax.Updater(container,ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=videoressortmore&vid="+ovViMCeId,{ method: 'get',onComplete:ovViMRefresh,evalScripts:true});
}
function ovViLoadMoreKey(container,videoid,sid)
{
ovViMCategory = sid;
ovViMCeId = videoid;
var myAjax=new Ajax.Updater(container,ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=videoressortmore&vid="+ovViMCeId+"&sid="+ovViMCategory,{ method: 'get',onComplete:ovViMRefresh,evalScripts:true});
}
function ovViMPaging(direction)
{
ovViMItemsWidth = $('vidM_items').getWidth();
if (direction == 1 && $('vidMbtnright').className!='moreslbtnrightinakt'){
if (ovViMItemsCount==0){
ovViMItemsCount=parseInt($('vidM_itemscount').value);
ovViMPages = Math.round((ovViMItemsCount/ovViMPageItemsCount)+0.5)-1;
}
ovViMPage++;
if (ovViMPage<=ovViMPageMax){
new Effect.Move('vidM_items',{x:-ovViMPageWidth*ovViMPage,y:10,mode:'absolute',queue:{scope:'vidmslider'}});
$('vidMbtnleft').className='moreslbtnleft';
}else if (ovViMPage<=ovViMPages){
ovViMPageMax=ovViMPage;
new Ajax.Request(ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=videoressortmore&vid="+ovViMCeId+"&sid="+ovViMCategory+"&index="+(ovViMPage*ovViMPageItemsCount+1),{ method: 'get',onComplete:ovViMPagingRefresh,evalScripts:true});
}
if (ovViMPage==ovViMPages)
$('vidMbtnright').className='moreslbtnrightinakt';
}else if (direction == 0){
if (ovViMPage>0){
ovViMPage--;
var ovViMItemsLeft = parseInt($('vidM_items').getStyle('left').replace('px',''));
new Effect.Move('vidM_items',{x:-ovViMPage*ovViMPageWidth,y:10,mode:'absolute',queue:{scope:'vidmslider'}});
if (ovViMPage==0){
$('vidMbtnleft').className='moreslbtnleftinakt';
}
$('vidMbtnright').className='moreslbtnright';
}
}
}
function ovViMPagingRefresh(transport)
{
var newResponse=transport.responseText;
if (newResponse.length > 0){
$('vidM_items').innerHTML+=newResponse;
$('vidM_items').setStyle({width:ovViMItemsWidth+ovViMPageWidth+'px'});
ovViMMoveElement.defer();
$('vidMbtnleft').className='moreslbtnleft';
}
ovVirRefresh();
}
function ovViMMoveElement()
{
new Effect.Move('vidM_items',{x:-ovViMItemsWidth,y:10,mode:'absolute',queue:{scope:'vidmslider'}});
}
function ovViMRefresh()
{
if ($('ovVidMSend')!=null)
{
$('ovVidMSend').href = $('ovVidMSend').href.substring(0,$('ovVidMSend').href.indexOf('urltosend')+10)+$('inpVideoUrl').value;
$('ovVidMUrl').href = $('inpVideoUrl').value;
$('ovVidMUrlinp').hide();
$('ovVidMUrlinp').removeAttribute('readOnly')
$('ovVidMUrlinp').value = $('ovVidMUrl').href;
$('ovVidMUrlinp').setAttribute('readOnly','readonly');
ovMarkSelected2('vidM_navilinks','tab'+ovViMCategory+"M");
}
ovViMItemsCount=0;
ovViMPage=0;
ovViMPageMax=0;
$('vidM_items').setStyle({width:ovViPageWidth+'px'});
$('vidM_items').setStyle({left:'0px'});
$('vidMbtnleft').className='moreslbtnleftinakt';
if (parseInt($('vidM_itemscount').value)<=ovViMPageItemsCount)
$('vidMbtnright').className='moreslbtnrightinakt';
else
$('vidMbtnright').className='moreslbtnright';
if ($('inpVideoIVW')!=null){
if($('inpVideoIVW').value==""){
$('inpVideoIVW').value="ok";
}else{
ovAjax.SetIVW("40030;ki_tv_box");
}
}
}
function ovVidShowTooltip(id)
{
if($(id)!=null){
$(id).style.visibility = "visible";
}
}
// ---------------------------------------------------------------------------
//Community-PopUp
var ovCommMouseX;
var ovCommMouseY;
function ovCommShow(event,box,object,titel)
{
if($('CommBox')) ovCommHideBox();
ovCommMouseX = ovToolkit.mouseX(event);
ovCommMouseY = ovToolkit.mouseY(event);
new Ajax.Request(ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=communitybox&box="+box+"&object="+object+"&titel="+titel,{method:'get',onSuccess:ovCommRefresh,evalScripts:true});
}
function ovCommRefresh(transport)
{
var newResponse=transport.responseText;
if (newResponse.length > 0){
//document.getElementsByTagName("body")[0].innerHTML += newResponse;
$('ovTooltip').innerHTML+=newResponse;
if($('kicker') != null && ovCommMouseX>420){ovCommMouseX=420;}
if($('ovKicker') != null && ovCommMouseX>640){ovCommMouseX=640;}
$('CommBox').setStyle({top:ovCommMouseY+10+'px',left:ovCommMouseX+'px'});
ovAjax.ShowElem('CommBox');
}
ovAjax.SetIVW("40030;ki_tv_box");
}
function ovCommSend(box,form)
{
ovAjax.HideElem('commStart');
if(ovAuth.authExists()){
ovAjax.ShowElem('commLoad');
var radio;
for (i=0; i<form.length; i++){
name=form[i].name;
if (name=='commStatus'){
if (form[i].checked){
radio=form[i].value;
}
}
}
var myAjax=new Ajax.Updater({success:'commContent'},ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=communitybox&box="+box+"&action=2&object="+document.commForm.object.value+"&titel="+document.commForm.title.value+"&comment="+$('commKomm').value+"&status="+radio+"&d="+(Math.random()*100000),{method:'get',evalScripts:true});
}else{
ovAjax.ShowElem('commLogin');
}
ovAjax.SetIVW("40030;ki_tv_box");
}
function ovCommSendSppa(mode,sppa)
{
ovAjax.HideElem('commStart');
if(ovAuth.authExists()){
ovAjax.ShowElem('commLoad');
var myAjax=new Ajax.Updater({success:'commContent'},ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=communitybox&box=1&action=2&object="+sppa+"&mode="+mode+"&d="+(Math.random()*100000),{method:'get',evalScripts:true});
}else{
ovAjax.ShowElem('commLogin');
}
ovAjax.SetIVW("40030;ki_tv_box");
}
function ovCommShowSppa(box,sppa)
{
var myAjax=new Ajax.Updater({success:'commContent'},ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=communitybox&box="+box+"&action=3&object="+sppa,{method:'get',evalScripts:true});
ovAjax.SetIVW("40030;ki_tv_box");
}
function ovCommHideBox()
{
$('CommBox').remove();
}
// ---------------------------------------------------------------------------
//Widget:Newsletter
var ovNewsEmail;
function ovSendNewsletter()
{
if ($('newsletterEmail')) {
ovNewsEmail = $('newsletterEmail').value;
}
else {
ovNewsEmail = '';
}
ovAjax.SetReloadIcon('newsletter_content');
new Ajax.Request(ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=widgetnewsletter&email='+ovNewsEmail,{method:'get',onComplete:ovNewsletterRefresh});
}
function ovNewsletterRefresh(transport)
{
if (transport.status == 405) {
window.location.href = ovToolkit.rootURL + "/community/profilaendern/type/newsletter/";
}else if (transport.status == 406) {
window.location.href = ovToolkit.rootURL + "/community/login/registrieren/type/newsletter/email/"+ovNewsEmail;
}else {
var newResponse=transport.responseText;
if (newResponse.length > 0){
$('newsletter_content').innerHTML=newResponse;
}
ovAjax.SetIVW('15400;ki_newsletter');
}
}
function ovKeyCheckEnterNewsletter(eventObj,myform)
{
var keyCode;
if (document.all) {
keyCode = eventObj.keyCode;
}else {
keyCode = eventObj.which;
}
if (keyCode == 13) {
ovSendNewsletter();
return false;
}
}
function SubmitZeitraum(obj)
{
window.location.href = obj.value;
}
function SubmitAnzeigesteuerung(obj,objname)
{
var liga = $('currLiga').value;
var saison = $('currSaison').value;
var spieltag = $('currSpieltag').value;
var resurl = $('currResURL').value;
var rawurl = $('currRawURL').value;
var turniergruppe;
if (objname == 'saison')
saison = obj.value;
else if (objname == 'spieltag')
spieltag = obj.value;
else if (objname == 'turniergruppe')
turniergruppe = obj.value;
rawurl = rawurl.replace('{liganame}',liga);
rawurl = rawurl.replace('{saison}',saison);
rawurl = rawurl.replace('{spieltag}',spieltag);
rawurl = rawurl.replace('{turniergruppe}',turniergruppe);
window.location.href = ovAjax.rootURL + resurl + rawurl;
}
function SubmitAnzeigesteuerungTopspieler(obj,objname)
{
var liga = $('currLiga').value;
var saison = $('currSaison').value;
var spieltag = $('currSpieltag').value;
var verein = $('currVerein').value;
var position = $('currPosition').value;
var resurl = $('currResURL').value;
var rawurl;
var rawurlSpieltag = $('currRawURLSpieltag').value;
var rawurlSaison = $('currRawURLSaison').value;
var rawurlSpieltagVerein = $('currRawURLSpieltagVerein').value;
var rawurlSaisonVerein = $('currRawURLSaisonVerein').value;
if (objname == 'saison')
saison = obj.value;
else if (objname == 'spieltag')
spieltag = obj.value;
else if (objname == 'verein')
verein = obj.value;
else if (objname == 'position')
position = obj.value;
if (spieltag == '0') {
if (verein == '0') {
rawurl = rawurlSaison;
}
else {
rawurl = rawurlSaisonVerein;
}
}
else {
if (verein == '0') {
rawurl = rawurlSpieltag;
}
else {
rawurl = rawurlSpieltagVerein;
}
}
if (position != '0') {
rawurl = rawurl.replace('.html','-' + position + '.html');
}
rawurl = rawurl.replace('{liganame}',liga);
rawurl = rawurl.replace('{saison}',saison);
rawurl = rawurl.replace('{spieltag}',spieltag);
rawurl = rawurl.replace('{vereinsname}',verein);
window.location.href = ovAjax.rootURL + resurl + rawurl;
}
// ---------------------------------------------------------------------------
function ovSlideChangeVereinsBilanz(ID,VrnID)
{
ovAjax.SetReloadIcon('bilanzsaison_'+ID);
var myAjax=new Ajax.Updater({success:'bilanzsaison_'+ID},ovAjax.rootURL+'/rkajax/ajax.ashx?ajaxtype=historie&index='+ID+'&vereinsid='+VrnID,{method:'get'});
}
