// ---------------------------------------------------------------------------
// 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/kickerplayer41.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('kickertoolbar')) {
//		var toolbarTop = document.getElementById('kickertoolbar').style.top.replace('px','');
//		if (toolbarTop == 33 || toolbarTop == 5 || toolbarTop == 7 || toolbarTop == 10) {
//			toolbarTop = (parseInt(toolbarTop) + 35);
//			document.getElementById('kickertoolbar').style.top = toolbarTop + 'px';
//		}
//	}
if(document.getElementById('art')==null){
if (document.getElementById('tb_printtop')) {
document.getElementById('tb_printtop').style.display ="block";
}
if (document.getElementById('tb_printbot')) {
document.getElementById('tb_printbot').style.display ="block";
}
}
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ützt dieses Feature nicht.\nBitte drucken Sie über Datei  >>  Drucken !");
}
}
ovToolkit.printback = function()
{
setActiveStyleSheet('ov');
document.getElementById('tb_printtopa').href = "javascript:ovToolkit.print(this);";
document.getElementById('tb_printtopa').style.width = "";
document.getElementById('tb_printtopa').style.display ="";
document.getElementById('tb_printtop').innerHTML = "Druckansicht";
document.getElementById('tb_printtop').style.visibility ="";
document.getElementById('tb_printtop').style.display ="";
document.getElementById('tb_printbota').href = "javascript:ovToolkit.print(this);";
document.getElementById('tb_printbota').style.width = "";
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('kickertoolbar')) {
//		var toolbarTop = document.getElementById('kickertoolbar').style.top.replace('px','');
//		if (toolbarTop == 78 || toolbarTop == 50 || toolbarTop == 52 || toolbarTop == 55) {
//			toolbarTop = (parseInt(toolbarTop) - 35);
//			document.getElementById('kickertoolbar').style.top = toolbarTop + 'px';
//		}
//	}
}
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.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ü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";
//document.location.href="http://kicker-mobil.stageov.dyndns.org?redirect=1";
}
}
catch(e){
}
}
ovToolkit.CheckNavi = function()
{
if (ovAuth.authExists()){
for (var i=0; i<30; i++){
var elm = document.getElementById("navi"+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 zurück
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 zurück
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") { //ä
utftext += "%C3%A4";
}
else if (rohtext.charAt(n) == "\u00f6") { //ö
utftext += "%C3%B6";
}
else if (rohtext.charAt(n) == "\u00fc") { //ü
utftext += "%C3%BC";
}
else if (rohtext.charAt(n) == "\u00df") { //ß
utftext += "%C3%9F";
}
else if (rohtext.charAt(n) == "\u00c4") { //Ä
utftext += "%C3%84";
}
else if (rohtext.charAt(n) == "\u00d6") { //Ö
utftext += "%C3%96";
}
else if (rohtext.charAt(n) == "\u00dc") { //Ü
utftext += "%C3%9C";
}
else if (rohtext.charAt(n) == "\u00f3") { //ó
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ü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ü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 für die Übergangsphase
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;
if (strUsername.length > 15)
shortUsername = strUsername.substring(0,12) + "...";
document.writeln('<div class="hd-auth" id="authlogbox">');
document.writeln('<div class="hd-authleftcom">Community:</div>');
document.writeln('<div class="hd-authright"><input class="hd-authbtn" value="Logout" name="logout" onclick="javascript:ovAuth.logout();" type="button"></div><br style="clear:both;" />');
document.writeln('<div class="hd-authleft">Eingeloggt als:</div>');
document.writeln('<div class="hd-authrightuser">' + shortUsername + '</div><br style="clear:both;" />');
document.writeln('<div class="hd-authleft">Posteingang:</div>');
document.writeln('<div class="hd-authright" id="newmailnav"></div><br style="clear:both;" />');
document.writeln('</div>');
}
ovAuth.createAnonym = function()
{
document.writeln('<div class="hd-login" id="authlogbox">');
document.writeln('<form action="' + ovAuth.getRootURL() + '/community/login/" method="post">');
document.writeln('<input id="returnurl" value="' + ovAuth.getReturnURL() + '" name="ReturnUrl" type="hidden">');
document.writeln('<input class="hd-authlog" id="nicknameLoginBox" autocomplete="off" value="Login" name="nickname" onfocus="javascript:ovAuth.clearUsernameTextField();" type="text">');
document.writeln('<input class="hd-authlog2" id="passwordLoginBox" autocomplete="off" value="pass" name="password" onfocus="javascript:ovAuth.clearPasswordTextField();" type="password">');
document.writeln('<input class="hd-authbtn" name="Submit" title="Anmelden" value="Los" accesskey="l" type="submit" >');
document.writeln('<input id="authresponse" autocomplete="off" name="authresponse" type="hidden">');
document.writeln('<br /><a href="' + ovAuth.getRootURL() + '/community/login/registrieren/">Nicht registriert?</a>');
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,EM,Dt. Fussball,Basketball,Int. Fussball,Nationalelf,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" };
//swfobject.embedSWF("kickerplayer.swf","myAlternativeContent","909","381","9.0.115",false,flashvars,params,attributes);
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){
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=dropmenuobj.x-clearbrowseredge(obj,"rightedge")+"px"
dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj,"bottomedge")+obj.offsetHeight+"px"
}
return clickreturnvalue()
}
function dropdownmenu2(obj,e,dropmenuID,newleft,newright){
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")-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"
}
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- © 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);
}
// ---------------------------------------------------------------------------
// Javascript:ShadowBox
// ---------------------------------------------------------------------------
/*
Copyright (c) 2007,Yahoo! Inc. All rights reserved.
Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt
version: 2.4.1
Note: This file includes yahoo,dom,event,and anim
*/
if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=A[C].split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C){var B=YAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return false;}};YAHOO.register=function(A,E,D){var I=YAHOO.env.modules;if(!I[A]){I[A]={versions:[],builds:[]};}var B=I[A],H=D.version,G=D.build,F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(var C=0;C<F.length;C=C+1){F[C](B);}if(E){E.VERSION=H;E.BUILD=G;}else{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(A){return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function(){var C={ie:0,opera:0,gecko:0,webkit:0,mobile:null};var B=navigator.userAgent,A;if((/KHTML/).test(B)){C.webkit=1;}A=B.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){C.webkit=parseFloat(A[1]);if(/ Mobile\//.test(B)){C.mobile="Apple";}else{A=B.match(/NokiaN[^\/]*/);if(A){C.mobile=A[0];}}}if(!C.webkit){A=B.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){C.opera=parseFloat(A[1]);A=B.match(/Opera Mini[^;]*/);if(A){C.mobile=A[0];}}else{A=B.match(/MSIE\s([^;]*)/);if(A&&A[1]){C.ie=parseFloat(A[1]);}else{A=B.match(/Gecko\/([^\s]*)/);if(A){C.gecko=1;A=B.match(/rv:([^\s\)]*)/);if(A&&A[1]){C.gecko=parseFloat(A[1]);}}}}}return C;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.env.listeners,D=true,C;if(B){for(C=0;C<A.length;C=C+1){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang=YAHOO.lang||{isArray:function(B){if(B){var A=YAHOO.lang;return A.isNumber(B.length)&&A.isFunction(B.splice);}return false;},isBoolean:function(A){return typeof A==="boolean";},isFunction:function(A){return typeof A==="function";},isNull:function(A){return A===null;},isNumber:function(A){return typeof A==="number"&&isFinite(A);},isObject:function(A){return(A&&(typeof A==="object"||YAHOO.lang.isFunction(A)))||false;},isString:function(A){return typeof A==="string";},isUndefined:function(A){return typeof A==="undefined";},hasOwnProperty:function(A,B){if(Object.prototype.hasOwnProperty){return A.hasOwnProperty(B);}return !YAHOO.lang.isUndefined(A[B])&&A.constructor.prototype[B]!==A[B];},_IEEnumFix:function(C,B){if(YAHOO.env.ua.ie){var E=["toString","valueOf"],A;for(A=0;A<E.length;A=A+1){var F=E[A],D=B[F];if(YAHOO.lang.isFunction(D)&&D!=Object.prototype[F]){C[F]=D;}}}},extend:function(D,E,C){if(!E||!D){throw new Error("YAHOO.lang.extend failed,please check that all dependencies are included.");}var B=function(){};B.prototype=E.prototype;D.prototype=new B();D.prototype.constructor=D;D.superclass=E.prototype;if(E.prototype.constructor==Object.prototype.constructor){E.prototype.constructor=E;}if(C){for(var A in C){D.prototype[A]=C[A];}YAHOO.lang._IEEnumFix(D.prototype,C);}},augmentObject:function(E,D){if(!D||!E){throw new Error("Absorb failed,verify dependencies.");}var A=arguments,C,F,B=A[2];if(B&&B!==true){for(C=2;C<A.length;C=C+1){E[A[C]]=D[A[C]];}}else{for(F in D){if(B||!E[F]){E[F]=D[F];}}YAHOO.lang._IEEnumFix(E,D);}},augmentProto:function(D,C){if(!C||!D){throw new Error("Augment failed,verify dependencies.");}var A=[D.prototype,C.prototype];for(var B=2;B<arguments.length;B=B+1){A.push(arguments[B]);}YAHOO.lang.augmentObject.apply(this,A);},dump:function(A,G){var C=YAHOO.lang,D,F,I=[],J="{...}",B="f(){...}",H=",",E=" => ";if(!C.isObject(A)){return A+"";}else{if(A instanceof Date||("nodeType" in A&&"tagName" in A)){return A;}else{if(C.isFunction(A)){return B;}}}G=(C.isNumber(G))?G:3;if(C.isArray(A)){I.push("[");for(D=0,F=A.length;D<F;D=D+1){if(C.isObject(A[D])){I.push((G>0)?C.dump(A[D],G-1):J);}else{I.push(A[D]);}I.push(H);}if(I.length>1){I.pop();}I.push("]");}else{I.push("{");for(D in A){if(C.hasOwnProperty(A,D)){I.push(D+E);if(C.isObject(A[D])){I.push((G>0)?C.dump(A[D],G-1):J);}else{I.push(A[D]);}I.push(H);}}if(I.length>1){I.pop();}I.push("}");}return I.join("");},substitute:function(Q,B,J){var G,F,E,M,N,P,D=YAHOO.lang,L=[],C,H="dump",K=" ",A="{",O="}";for(;;){G=Q.lastIndexOf(A);if(G<0){break;}F=Q.indexOf(O,G);if(G+1>=F){break;}C=Q.substring(G+1,F);M=C;P=null;E=M.indexOf(K);if(E>-1){P=M.substring(E+1);M=M.substring(0,E);}N=B[M];if(J){N=J(M,N,P);}if(D.isObject(N)){if(D.isArray(N)){N=D.dump(N,parseInt(P,10));}else{P=P||"";var I=P.indexOf(H);if(I>-1){P=P.substring(4);}if(N.toString===Object.prototype.toString||I>-1){N=D.dump(N,parseInt(P,10));}else{N=N.toString();}}}else{if(!D.isString(N)&&!D.isNumber(N)){N="~-"+L.length+"-~";L[L.length]=C;}}Q=Q.substring(0,G)+N+Q.substring(F+1);}for(G=L.length-1;G>=0;G=G-1){Q=Q.replace(new RegExp("~-"+G+"-~"),"{"+L[G]+"}","g");}return Q;},trim:function(A){try{return A.replace(/^\s+|\s+$/g,"");}catch(B){return A;}},merge:function(){var D={},B=arguments;for(var C=0,A=B.length;C<A;C=C+1){YAHOO.lang.augmentObject(D,B[C],true);}return D;},later:function(H,B,I,D,E){H=H||0;B=B||{};var C=I,G=D,F,A;if(YAHOO.lang.isString(I)){C=B[I];}if(!C){throw new TypeError("method undefined");}if(!YAHOO.lang.isArray(G)){G=[D];}F=function(){C.apply(B,G);};A=(E)?setInterval(F,H):setTimeout(F,H);return{interval:E,cancel:function(){if(this.interval){clearInterval(A);}else{clearTimeout(A);}}};},isValue:function(B){var A=YAHOO.lang;return(A.isObject(B)||A.isString(B)||A.isNumber(B)||A.isBoolean(B));}};YAHOO.util.Lang=YAHOO.lang;YAHOO.lang.augment=YAHOO.lang.augmentProto;YAHOO.augment=YAHOO.lang.augmentProto;YAHOO.extend=YAHOO.lang.extend;YAHOO.register("yahoo",YAHOO,{version:"2.4.1",build:"742"});(function(){var B=YAHOO.util,L,J,H=0,K={},F={},N=window.document;var C=YAHOO.env.ua.opera,M=YAHOO.env.ua.webkit,A=YAHOO.env.ua.gecko,G=YAHOO.env.ua.ie;var E={HYPHEN:/(-[a-z])/i,ROOT_TAG:/^body|html$/i};var O=function(Q){if(!E.HYPHEN.test(Q)){return Q;}if(K[Q]){return K[Q];}var R=Q;while(E.HYPHEN.exec(R)){R=R.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());}K[Q]=R;return R;};var P=function(R){var Q=F[R];if(!Q){Q=new RegExp("(?:^|\\s+)"+R+"(?:\\s+|$)");F[R]=Q;}return Q;};if(N.defaultView&&N.defaultView.getComputedStyle){L=function(Q,T){var S=null;if(T=="float"){T="cssFloat";}var R=N.defaultView.getComputedStyle(Q,"");if(R){S=R[O(T)];}return Q.style[T]||S;};}else{if(N.documentElement.currentStyle&&G){L=function(Q,S){switch(O(S)){case"opacity":var U=100;try{U=Q.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(T){try{U=Q.filters("alpha").opacity;}catch(T){}}return U/100;case"float":S="styleFloat";default:var R=Q.currentStyle?Q.currentStyle[S]:null;return(Q.style[S]||R);}};}else{L=function(Q,R){return Q.style[R];};}}if(G){J=function(Q,R,S){switch(R){case"opacity":if(YAHOO.lang.isString(Q.style.filter)){Q.style.filter="alpha(opacity="+S*100+")";if(!Q.currentStyle||!Q.currentStyle.hasLayout){Q.style.zoom=1;}}break;case"float":R="styleFloat";default:if(S && S != "NaNpx"){Q.style[R]=S}else{Q.style[R]="0px"};}};}else{J=function(Q,R,S){if(R=="float"){R="cssFloat";}Q.style[R]=S;};}var D=function(Q,R){return Q&&Q.nodeType==1&&(!R||R(Q));};YAHOO.util.Dom={get:function(S){if(S&&(S.tagName||S.item)){return S;}if(YAHOO.lang.isString(S)||!S){return N.getElementById(S);}if(S.length!==undefined){var T=[];for(var R=0,Q=S.length;R<Q;++R){T[T.length]=B.Dom.get(S[R]);}return T;}return S;},getStyle:function(Q,S){S=O(S);var R=function(T){return L(T,S);};return B.Dom.batch(Q,R,B.Dom,true);},setStyle:function(Q,S,T){S=O(S);var R=function(U){J(U,S,T);};B.Dom.batch(Q,R,B.Dom,true);},getXY:function(Q){var R=function(S){if((S.parentNode===null||S.offsetParent===null||this.getStyle(S,"display")=="none")&&S!=S.ownerDocument.body){return false;}return I(S);};return B.Dom.batch(Q,R,B.Dom,true);},getX:function(Q){var R=function(S){return B.Dom.getXY(S)[0];};return B.Dom.batch(Q,R,B.Dom,true);},getY:function(Q){var R=function(S){return B.Dom.getXY(S)[1];};return B.Dom.batch(Q,R,B.Dom,true);},setXY:function(Q,T,S){var R=function(W){var V=this.getStyle(W,"position");if(V=="static"){this.setStyle(W,"position","relative");V="relative";}var Y=this.getXY(W);if(Y===false){return false;}var X=[parseInt(this.getStyle(W,"left"),10),parseInt(this.getStyle(W,"top"),10)];if(isNaN(X[0])){X[0]=(V=="relative")?0:W.offsetLeft;}if(isNaN(X[1])){X[1]=(V=="relative")?0:W.offsetTop;}if(T[0]!==null){W.style.left=T[0]-Y[0]+X[0]+"px";}if(T[1]!==null){W.style.top=T[1]-Y[1]+X[1]+"px";}if(!S){var U=this.getXY(W);if((T[0]!==null&&U[0]!=T[0])||(T[1]!==null&&U[1]!=T[1])){this.setXY(W,T,true);}}};B.Dom.batch(Q,R,B.Dom,true);},setX:function(R,Q){B.Dom.setXY(R,[Q,null]);},setY:function(Q,R){B.Dom.setXY(Q,[null,R]);},getRegion:function(Q){var R=function(S){if((S.parentNode===null||S.offsetParent===null||this.getStyle(S,"display")=="none")&&S!=N.body){return false;}var T=B.Region.getRegion(S);return T;};return B.Dom.batch(Q,R,B.Dom,true);},getClientWidth:function(){return B.Dom.getViewportWidth();},getClientHeight:function(){return B.Dom.getViewportHeight();},getElementsByClassName:function(U,Y,V,W){Y=Y||"*";V=(V)?B.Dom.get(V):null||N;if(!V){return[];}var R=[],Q=V.getElementsByTagName(Y),X=P(U);for(var S=0,T=Q.length;S<T;++S){if(X.test(Q[S].className)){R[R.length]=Q[S];if(W){W.call(Q[S],Q[S]);}}}return R;},hasClass:function(S,R){var Q=P(R);var T=function(U){return Q.test(U.className);};return B.Dom.batch(S,T,B.Dom,true);},addClass:function(R,Q){var S=function(T){if(this.hasClass(T,Q)){return false;}T.className=YAHOO.lang.trim([T.className,Q].join(" "));return true;};return B.Dom.batch(R,S,B.Dom,true);},removeClass:function(S,R){var Q=P(R);var T=function(U){if(!this.hasClass(U,R)){return false;}var V=U.className;U.className=V.replace(Q," ");if(this.hasClass(U,R)){this.removeClass(U,R);}U.className=YAHOO.lang.trim(U.className);return true;};return B.Dom.batch(S,T,B.Dom,true);},replaceClass:function(T,R,Q){if(!Q||R===Q){return false;}var S=P(R);var U=function(V){if(!this.hasClass(V,R)){this.addClass(V,Q);return true;}V.className=V.className.replace(S," "+Q+" ");if(this.hasClass(V,R)){this.replaceClass(V,R,Q);}V.className=YAHOO.lang.trim(V.className);return true;};return B.Dom.batch(T,U,B.Dom,true);},generateId:function(Q,S){S=S||"yui-gen";var R=function(T){if(T&&T.id){return T.id;}var U=S+H++;if(T){T.id=U;}return U;};return B.Dom.batch(Q,R,B.Dom,true)||R.apply(B.Dom,arguments);},isAncestor:function(Q,R){Q=B.Dom.get(Q);R=B.Dom.get(R);if(!Q||!R){return false;}if(Q.contains&&R.nodeType&&!M){return Q.contains(R);}else{if(Q.compareDocumentPosition&&R.nodeType){return !!(Q.compareDocumentPosition(R)&16);}else{if(R.nodeType){return !!this.getAncestorBy(R,function(S){return S==Q;});}}}return false;},inDocument:function(Q){return this.isAncestor(N.documentElement,Q);},getElementsBy:function(X,R,S,U){R=R||"*";S=(S)?B.Dom.get(S):null||N;if(!S){return[];}var T=[],W=S.getElementsByTagName(R);for(var V=0,Q=W.length;V<Q;++V){if(X(W[V])){T[T.length]=W[V];if(U){U(W[V]);}}}return T;},batch:function(U,X,W,S){U=(U&&(U.tagName||U.item))?U:B.Dom.get(U);if(!U||!X){return false;}var T=(S)?W:window;if(U.tagName||U.length===undefined){return X.call(T,U,W);}var V=[];for(var R=0,Q=U.length;R<Q;++R){V[V.length]=X.call(T,U[R],W);}return V;},getDocumentHeight:function(){var R=(N.compatMode!="CSS1Compat")?N.body.scrollHeight:N.documentElement.scrollHeight;var Q=Math.max(R,B.Dom.getViewportHeight());return Q;},getDocumentWidth:function(){var R=(N.compatMode!="CSS1Compat")?N.body.scrollWidth:N.documentElement.scrollWidth;var Q=Math.max(R,B.Dom.getViewportWidth());return Q;},getViewportHeight:function(){var Q=self.innerHeight;var R=N.compatMode;if((R||G)&&!C){Q=(R=="CSS1Compat")?N.documentElement.clientHeight:N.body.clientHeight;
}return Q;},getViewportWidth:function(){var Q=self.innerWidth;var R=N.compatMode;if(R||G){Q=(R=="CSS1Compat")?N.documentElement.clientWidth:N.body.clientWidth;}return Q;},getAncestorBy:function(Q,R){while(Q=Q.parentNode){if(D(Q,R)){return Q;}}return null;},getAncestorByClassName:function(R,Q){R=B.Dom.get(R);if(!R){return null;}var S=function(T){return B.Dom.hasClass(T,Q);};return B.Dom.getAncestorBy(R,S);},getAncestorByTagName:function(R,Q){R=B.Dom.get(R);if(!R){return null;}var S=function(T){return T.tagName&&T.tagName.toUpperCase()==Q.toUpperCase();};return B.Dom.getAncestorBy(R,S);},getPreviousSiblingBy:function(Q,R){while(Q){Q=Q.previousSibling;if(D(Q,R)){return Q;}}return null;},getPreviousSibling:function(Q){Q=B.Dom.get(Q);if(!Q){return null;}return B.Dom.getPreviousSiblingBy(Q);},getNextSiblingBy:function(Q,R){while(Q){Q=Q.nextSibling;if(D(Q,R)){return Q;}}return null;},getNextSibling:function(Q){Q=B.Dom.get(Q);if(!Q){return null;}return B.Dom.getNextSiblingBy(Q);},getFirstChildBy:function(Q,S){var R=(D(Q.firstChild,S))?Q.firstChild:null;return R||B.Dom.getNextSiblingBy(Q.firstChild,S);},getFirstChild:function(Q,R){Q=B.Dom.get(Q);if(!Q){return null;}return B.Dom.getFirstChildBy(Q);},getLastChildBy:function(Q,S){if(!Q){return null;}var R=(D(Q.lastChild,S))?Q.lastChild:null;return R||B.Dom.getPreviousSiblingBy(Q.lastChild,S);},getLastChild:function(Q){Q=B.Dom.get(Q);return B.Dom.getLastChildBy(Q);},getChildrenBy:function(R,T){var S=B.Dom.getFirstChildBy(R,T);var Q=S?[S]:[];B.Dom.getNextSiblingBy(S,function(U){if(!T||T(U)){Q[Q.length]=U;}return false;});return Q;},getChildren:function(Q){Q=B.Dom.get(Q);if(!Q){}return B.Dom.getChildrenBy(Q);},getDocumentScrollLeft:function(Q){Q=Q||N;return Math.max(Q.documentElement.scrollLeft,Q.body.scrollLeft);},getDocumentScrollTop:function(Q){Q=Q||N;return Math.max(Q.documentElement.scrollTop,Q.body.scrollTop);},insertBefore:function(R,Q){R=B.Dom.get(R);Q=B.Dom.get(Q);if(!R||!Q||!Q.parentNode){return null;}return Q.parentNode.insertBefore(R,Q);},insertAfter:function(R,Q){R=B.Dom.get(R);Q=B.Dom.get(Q);if(!R||!Q||!Q.parentNode){return null;}if(Q.nextSibling){return Q.parentNode.insertBefore(R,Q.nextSibling);}else{return Q.parentNode.appendChild(R);}},getClientRegion:function(){var S=B.Dom.getDocumentScrollTop(),R=B.Dom.getDocumentScrollLeft(),T=B.Dom.getViewportWidth()+R,Q=B.Dom.getViewportHeight()+S;return new B.Region(S,T,Q,R);}};var I=function(){if(N.documentElement.getBoundingClientRect){return function(R){var S=R.getBoundingClientRect();var Q=R.ownerDocument;return[S.left+B.Dom.getDocumentScrollLeft(Q),S.top+B.Dom.getDocumentScrollTop(Q)];};}else{return function(S){var T=[S.offsetLeft,S.offsetTop];var R=S.offsetParent;var Q=(M&&B.Dom.getStyle(S,"position")=="absolute"&&S.offsetParent==S.ownerDocument.body);if(R!=S){while(R){T[0]+=R.offsetLeft;T[1]+=R.offsetTop;if(!Q&&M&&B.Dom.getStyle(R,"position")=="absolute"){Q=true;}R=R.offsetParent;}}if(Q){T[0]-=S.ownerDocument.body.offsetLeft;T[1]-=S.ownerDocument.body.offsetTop;}R=S.parentNode;while(R.tagName&&!E.ROOT_TAG.test(R.tagName)){if(B.Dom.getStyle(R,"display").search(/^inline|table-row.*$/i)){T[0]-=R.scrollLeft;T[1]-=R.scrollTop;}R=R.parentNode;}return T;};}}();})();YAHOO.util.Region=function(C,D,A,B){this.top=C;this[1]=C;this.right=D;this.bottom=A;this.left=B;this[0]=B;};YAHOO.util.Region.prototype.contains=function(A){return(A.left>=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E){var C=Math.max(this.top,E.top);var D=Math.min(this.right,E.right);var A=Math.min(this.bottom,E.bottom);var B=Math.max(this.left,E.left);if(A>=C&&D>=B){return new YAHOO.util.Region(C,D,A,B);}else{return null;}};YAHOO.util.Region.prototype.union=function(E){var C=Math.min(this.top,E.top);var D=Math.max(this.right,E.right);var A=Math.max(this.bottom,E.bottom);var B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function(){return("Region {top: "+this.top+",right: "+this.right+",bottom: "+this.bottom+",left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(D){var F=YAHOO.util.Dom.getXY(D);var C=F[1];var E=F[0]+D.offsetWidth;var A=F[1]+D.offsetHeight;var B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B){if(YAHOO.lang.isArray(A)){B=A[1];A=A[0];}this.x=this.right=this.left=this[0]=A;this.y=this.top=this.bottom=this[1]=B;};YAHOO.util.Point.prototype=new YAHOO.util.Region();YAHOO.register("dom",YAHOO.util.Dom,{version:"2.4.1",build:"742"});YAHOO.util.CustomEvent=function(D,B,C,A){this.type=D;this.scope=B||window;this.silent=C;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var E="_YUICEOnSubscribe";if(D!==E){this.subscribeEvent=new YAHOO.util.CustomEvent(E,this,true);}this.lastError=null;};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(B,C,A){if(!B){throw new Error("Invalid callback for subscriber to '"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(B,C,A);}this.subscribers.push(new YAHOO.util.Subscriber(B,C,A));},unsubscribe:function(D,F){if(!D){return this.unsubscribeAll();}var E=false;for(var B=0,A=this.subscribers.length;B<A;++B){var C=this.subscribers[B];if(C&&C.contains(D,F)){this._delete(B);E=true;}}return E;},fire:function(){var D=this.subscribers.length;if(!D&&this.silent){return true;}var H=[],F=true,C,I=false;for(C=0;C<arguments.length;++C){H.push(arguments[C]);}if(!this.silent){}for(C=0;C<D;++C){var L=this.subscribers[C];if(!L){I=true;}else{if(!this.silent){}var K=L.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var A=null;if(H.length>0){A=H[0];}try{F=L.fn.call(K,A,L.obj);}catch(E){this.lastError=E;}}else{try{F=L.fn.call(K,this.type,H,L.obj);}catch(G){this.lastError=G;}}if(false===F){if(!this.silent){}return false;}}}if(I){var J=[],B=this.subscribers;for(C=0,D=B.length;C<D;C=C+1){J.push(B[C]);}this.subscribers=J;}return true;},unsubscribeAll:function(){for(var B=0,A=this.subscribers.length;B<A;++B){this._delete(A-1-B);}this.subscribers=[];return B;},_delete:function(A){var B=this.subscribers[A];if(B){delete B.fn;delete B.obj;}this.subscribers[A]=null;},toString:function(){return"CustomEvent: '"+this.type+"',scope: "+this.scope;}};YAHOO.util.Subscriber=function(B,C,A){this.fn=B;this.obj=YAHOO.lang.isUndefined(C)?null:C;this.override=A;};YAHOO.util.Subscriber.prototype.getScope=function(A){if(this.override){if(this.override===true){return this.obj;}else{return this.override;}}return A;};YAHOO.util.Subscriber.prototype.contains=function(A,B){if(B){return(this.fn==A&&this.obj==B);}else{return(this.fn==A);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+",override: "+(this.override||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var H=false;var I=[];var J=[];var G=[];var E=[];var C=0;var F=[];var B=[];var A=0;var D={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9};return{POLL_RETRYS:4000,POLL_INTERVAL:10,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:YAHOO.env.ua.ie,_interval:null,_dri:null,DOMReady:false,startInterval:function(){if(!this._interval){var K=this;var L=function(){K._tryPreloadAttach();};this._interval=setInterval(L,this.POLL_INTERVAL);}},onAvailable:function(P,M,Q,O,N){var K=(YAHOO.lang.isString(P))?[P]:P;for(var L=0;L<K.length;L=L+1){F.push({id:K[L],fn:M,obj:Q,override:O,checkReady:N});}C=this.POLL_RETRYS;this.startInterval();},onContentReady:function(M,K,N,L){this.onAvailable(M,K,N,L,true);},onDOMReady:function(K,M,L){if(this.DOMReady){setTimeout(function(){var N=window;if(L){if(L===true){N=M;}else{N=L;}}K.call(N,"DOMReady",[],M);},0);}else{this.DOMReadyEvent.subscribe(K,M,L);}},addListener:function(M,K,V,Q,L){if(!V||!V.call){return false;}if(this._isValidCollection(M)){var W=true;for(var R=0,T=M.length;R<T;++R){W=this.on(M[R],K,V,Q,L)&&W;}return W;}else{if(YAHOO.lang.isString(M)){var P=this.getEl(M);if(P){M=P;}else{this.onAvailable(M,function(){YAHOO.util.Event.on(M,K,V,Q,L);});return true;}}}if(!M){return false;}if("unload"==K&&Q!==this){J[J.length]=[M,K,V,Q,L];return true;}var Y=M;if(L){if(L===true){Y=Q;}else{Y=L;}}var N=function(Z){return V.call(Y,YAHOO.util.Event.getEvent(Z,M),Q);};var X=[M,K,V,N,Y,Q,L];var S=I.length;I[S]=X;if(this.useLegacyEvent(M,K)){var O=this.getLegacyIndex(M,K);if(O==-1||M!=G[O][0]){O=G.length;B[M.id+K]=O;G[O]=[M,K,M["on"+K]];E[O]=[];M["on"+K]=function(Z){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(Z),O);};}E[O].push(X);}else{try{this._simpleAdd(M,K,N,false);}catch(U){this.lastError=U;this.removeListener(M,K,V);return false;}}return true;},fireLegacyEvent:function(O,M){var Q=true,K,S,R,T,P;S=E[M];for(var L=0,N=S.length;L<N;++L){R=S[L];if(R&&R[this.WFN]){T=R[this.ADJ_SCOPE];P=R[this.WFN].call(T,O);Q=(Q&&P);}}K=G[M];if(K&&K[2]){K[2](O);}return Q;},getLegacyIndex:function(L,M){var K=this.generateId(L)+M;if(typeof B[K]=="undefined"){return -1;}else{return B[K];}},useLegacyEvent:function(L,M){if(this.webkit&&("click"==M||"dblclick"==M)){var K=parseInt(this.webkit,10);if(!isNaN(K)&&K<418){return true;}}return false;},removeListener:function(L,K,T){var O,R,V;if(typeof L=="string"){L=this.getEl(L);}else{if(this._isValidCollection(L)){var U=true;for(O=0,R=L.length;O<R;++O){U=(this.removeListener(L[O],K,T)&&U);}return U;}}if(!T||!T.call){return this.purgeElement(L,false,K);}if("unload"==K){for(O=0,R=J.length;O<R;O++){V=J[O];if(V&&V[0]==L&&V[1]==K&&V[2]==T){J[O]=null;return true;}}return false;}var P=null;var Q=arguments[3];if("undefined"===typeof Q){Q=this._getCacheIndex(L,K,T);}if(Q>=0){P=I[Q];}if(!L||!P){return false;}if(this.useLegacyEvent(L,K)){var N=this.getLegacyIndex(L,K);var M=E[N];if(M){for(O=0,R=M.length;O<R;++O){V=M[O];if(V&&V[this.EL]==L&&V[this.TYPE]==K&&V[this.FN]==T){M[O]=null;break;}}}}else{try{this._simpleRemove(L,K,P[this.WFN],false);}catch(S){this.lastError=S;return false;}}delete I[Q][this.WFN];delete I[Q][this.FN];I[Q]=null;return true;},getTarget:function(M,L){var K=M.target||M.srcElement;return this.resolveTextNode(K);},resolveTextNode:function(K){if(K&&3==K.nodeType){return K.parentNode;}else{return K;}},getPageX:function(L){var K=L.pageX;if(!K&&0!==K){K=L.clientX||0;if(this.isIE){K+=this._getScrollLeft();}}return K;},getPageY:function(K){var L=K.pageY;if(!L&&0!==L){L=K.clientY||0;if(this.isIE){L+=this._getScrollTop();}}return L;},getXY:function(K){return[this.getPageX(K),this.getPageY(K)];
},getRelatedTarget:function(L){var K=L.relatedTarget;if(!K){if(L.type=="mouseout"){K=L.toElement;}else{if(L.type=="mouseover"){K=L.fromElement;}}}return this.resolveTextNode(K);},getTime:function(M){if(!M.time){var L=new Date().getTime();try{M.time=L;}catch(K){this.lastError=K;return L;}}return M.time;},stopEvent:function(K){this.stopPropagation(K);this.preventDefault(K);},stopPropagation:function(K){if(K.stopPropagation){K.stopPropagation();}else{K.cancelBubble=true;}},preventDefault:function(K){if(K.preventDefault){K.preventDefault();}else{K.returnValue=false;}},getEvent:function(M,K){var L=M||window.event;if(!L){var N=this.getEvent.caller;while(N){L=N.arguments[0];if(L&&Event==L.constructor){break;}N=N.caller;}}return L;},getCharCode:function(L){var K=L.keyCode||L.charCode||0;if(YAHOO.env.ua.webkit&&(K in D)){K=D[K];}return K;},_getCacheIndex:function(O,P,N){for(var M=0,L=I.length;M<L;++M){var K=I[M];if(K&&K[this.FN]==N&&K[this.EL]==O&&K[this.TYPE]==P){return M;}}return -1;},generateId:function(K){var L=K.id;if(!L){L="yuievtautoid-"+A;++A;K.id=L;}return L;},_isValidCollection:function(L){try{return(L&&typeof L!=="string"&&L.length&&!L.tagName&&!L.alert&&typeof L[0]!=="undefined");}catch(K){return false;}},elCache:{},getEl:function(K){return(typeof K==="string")?document.getElementById(K):K;},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",this),_load:function(L){if(!H){H=true;var K=YAHOO.util.Event;K._ready();K._tryPreloadAttach();}},_ready:function(L){var K=YAHOO.util.Event;if(!K.DOMReady){K.DOMReady=true;K.DOMReadyEvent.fire();K._simpleRemove(document,"DOMContentLoaded",K._ready);}},_tryPreloadAttach:function(){if(this.locked){return false;}if(this.isIE){if(!this.DOMReady){this.startInterval();return false;}}this.locked=true;var P=!H;if(!P){P=(C>0);}var O=[];var Q=function(S,T){var R=S;if(T.override){if(T.override===true){R=T.obj;}else{R=T.override;}}T.fn.call(R,T.obj);};var L,K,N,M;for(L=0,K=F.length;L<K;++L){N=F[L];if(N&&!N.checkReady){M=this.getEl(N.id);if(M){Q(M,N);F[L]=null;}else{O.push(N);}}}for(L=0,K=F.length;L<K;++L){N=F[L];if(N&&N.checkReady){M=this.getEl(N.id);if(M){if(H||M.nextSibling){Q(M,N);F[L]=null;}}else{O.push(N);}}}C=(O.length===0)?0:C-1;if(P){this.startInterval();}else{clearInterval(this._interval);this._interval=null;}this.locked=false;return true;},purgeElement:function(O,P,R){var M=(YAHOO.lang.isString(O))?this.getEl(O):O;var Q=this.getListeners(M,R),N,K;if(Q){for(N=0,K=Q.length;N<K;++N){var L=Q[N];this.removeListener(M,L.type,L.fn,L.index);}}if(P&&M&&M.childNodes){for(N=0,K=M.childNodes.length;N<K;++N){this.purgeElement(M.childNodes[N],P,R);}}},getListeners:function(M,K){var P=[],L;if(!K){L=[I,J];}else{if(K==="unload"){L=[J];}else{L=[I];}}var R=(YAHOO.lang.isString(M))?this.getEl(M):M;for(var O=0;O<L.length;O=O+1){var T=L[O];if(T&&T.length>0){for(var Q=0,S=T.length;Q<S;++Q){var N=T[Q];if(N&&N[this.EL]===R&&(!K||K===N[this.TYPE])){P.push({type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.OVERRIDE],scope:N[this.ADJ_SCOPE],index:Q});}}}}return(P.length)?P:null;},_unload:function(R){var Q=YAHOO.util.Event,O,N,L,K,M;for(O=0,K=J.length;O<K;++O){L=J[O];if(L){var P=window;if(L[Q.ADJ_SCOPE]){if(L[Q.ADJ_SCOPE]===true){P=L[Q.UNLOAD_OBJ];}else{P=L[Q.ADJ_SCOPE];}}L[Q.FN].call(P,Q.getEvent(R,L[Q.EL]),L[Q.UNLOAD_OBJ]);J[O]=null;L=null;P=null;}}J=null;if(YAHOO.env.ua.ie&&I&&I.length>0){N=I.length;while(N){M=N-1;L=I[M];if(L){Q.removeListener(L[Q.EL],L[Q.TYPE],L[Q.FN],M);}N--;}L=null;}G=null;Q._simpleRemove(window,"unload",Q._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var K=document.documentElement,L=document.body;if(K&&(K.scrollTop||K.scrollLeft)){return[K.scrollTop,K.scrollLeft];}else{if(L){return[L.scrollTop,L.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(M,N,L,K){M.addEventListener(N,L,(K));};}else{if(window.attachEvent){return function(M,N,L,K){M.attachEvent("on"+N,L);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(M,N,L,K){M.removeEventListener(N,L,(K));};}else{if(window.detachEvent){return function(L,M,K){L.detachEvent("on"+M,K);};}else{return function(){};}}}()};}();(function(){var A=YAHOO.util.Event;A.on=A.addListener;if(A.isIE){YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);A._dri=setInterval(function(){var C=document.createElement("p");try{C.doScroll("left");clearInterval(A._dri);A._dri=null;A._ready();C=null;}catch(B){C=null;}},A.POLL_INTERVAL);}else{if(A.webkit){A._dri=setInterval(function(){var B=document.readyState;if("loaded"==B||"complete"==B){clearInterval(A._dri);A._dri=null;A._ready();}},A.POLL_INTERVAL);}else{A._simpleAdd(document,"DOMContentLoaded",A._ready);}}A._simpleAdd(window,"load",A._load);A._simpleAdd(window,"unload",A._unload);A._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[A];if(D){D.subscribe(C,F,E);}else{this.__yui_subscribers=this.__yui_subscribers||{};var B=this.__yui_subscribers;if(!B[A]){B[A]=[];}B[A].push({fn:C,obj:F,override:E});}},unsubscribe:function(C,E,G){this.__yui_events=this.__yui_events||{};var A=this.__yui_events;if(C){var F=A[C];if(F){return F.unsubscribe(E,G);}}else{var B=true;for(var D in A){if(YAHOO.lang.hasOwnProperty(A,D)){B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A){return this.unsubscribe(A);},createEvent:function(G,D){this.__yui_events=this.__yui_events||{};var A=D||{};var I=this.__yui_events;if(I[G]){}else{var H=A.scope||this;var E=(A.silent);var B=new YAHOO.util.CustomEvent(G,H,E,YAHOO.util.CustomEvent.FLAT);I[G]=B;if(A.onSubscribeCallback){B.subscribeEvent.subscribe(A.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};
var F=this.__yui_subscribers[G];if(F){for(var C=0;C<F.length;++C){B.subscribe(F[C].fn,F[C].obj,F[C].override);}}}return I[G];},fireEvent:function(E,D,A,C){this.__yui_events=this.__yui_events||{};var G=this.__yui_events[E];if(!G){return null;}var B=[];for(var F=1;F<arguments.length;++F){B.push(arguments[F]);}return G.fire.apply(G,B);},hasEvent:function(A){if(this.__yui_events){if(this.__yui_events[A]){return true;}}return false;}};YAHOO.util.KeyListener=function(A,F,B,C){if(!A){}else{if(!F){}else{if(!B){}}}if(!C){C=YAHOO.util.KeyListener.KEYDOWN;}var D=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(typeof A=="string"){A=document.getElementById(A);}if(typeof B=="function"){D.subscribe(B);}else{D.subscribe(B.fn,B.scope,B.correctScope);}function E(J,I){if(!F.shift){F.shift=false;}if(!F.alt){F.alt=false;}if(!F.ctrl){F.ctrl=false;}if(J.shiftKey==F.shift&&J.altKey==F.alt&&J.ctrlKey==F.ctrl){var G;if(F.keys instanceof Array){for(var H=0;H<F.keys.length;H++){G=F.keys[H];if(G==J.charCode){D.fire(J.charCode,J);break;}else{if(G==J.keyCode){D.fire(J.keyCode,J);break;}}}}else{G=F.keys;if(G==J.charCode){D.fire(J.charCode,J);}else{if(G==J.keyCode){D.fire(J.keyCode,J);}}}}}this.enable=function(){if(!this.enabled){YAHOO.util.Event.addListener(A,C,E);this.enabledEvent.fire(F);}this.enabled=true;};this.disable=function(){if(this.enabled){YAHOO.util.Event.removeListener(A,C,E);this.disabledEvent.fire(F);}this.enabled=false;};this.toString=function(){return"KeyListener ["+F.keys+"] "+A.tagName+(A.id?"["+A.id+"]":"");};};YAHOO.util.KeyListener.KEYDOWN="keydown";YAHOO.util.KeyListener.KEYUP="keyup";YAHOO.util.KeyListener.KEY={ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,TAB:9,UP:38};YAHOO.register("event",YAHOO.util.Event,{version:"2.4.1",build:"742"});YAHOO.register("yahoo-dom-event",YAHOO,{version: "2.4.1",build: "742"});
YAHOO.util.Anim=function(B,A,C,D){if(!B){}this.init(B,A,C,D);};YAHOO.util.Anim.prototype={toString:function(){var A=this.getEl();var B=A.id||A.tagName||A;return("Anim "+B);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(A,C,B){return this.method(this.currentFrame,C,B-C,this.totalFrames);},setAttribute:function(A,C,B){if(this.patterns.noNegatives.test(A)){C=(C>0)?C:0;}YAHOO.util.Dom.setStyle(this.getEl(),A,C+B);},getAttribute:function(A){var C=this.getEl();var E=YAHOO.util.Dom.getStyle(C,A);if(E!=="auto"&&!this.patterns.offsetUnit.test(E)){return parseFloat(E);}var B=this.patterns.offsetAttribute.exec(A)||[];var F=!!(B[3]);var D=!!(B[2]);if(D||(YAHOO.util.Dom.getStyle(C,"position")=="absolute"&&F)){E=C["offset"+B[0].charAt(0).toUpperCase()+B[0].substr(1)];}else{E=0;}return E;},getDefaultUnit:function(A){if(this.patterns.defaultUnit.test(A)){return"px";}return"";},setRuntimeAttribute:function(B){var G;var C;var D=this.attributes;this.runtimeAttributes[B]={};var F=function(H){return(typeof H!=="undefined");};if(!F(D[B]["to"])&&!F(D[B]["by"])){return false;}G=(F(D[B]["from"]))?D[B]["from"]:this.getAttribute(B);if(F(D[B]["to"])){C=D[B]["to"];}else{if(F(D[B]["by"])){if(G.constructor==Array){C=[];for(var E=0,A=G.length;E<A;++E){C[E]=G[E]+D[B]["by"][E]*1;}}else{C=G+D[B]["by"]*1;}}}this.runtimeAttributes[B].start=G;this.runtimeAttributes[B].end=C;this.runtimeAttributes[B].unit=(F(D[B].unit))?D[B]["unit"]:this.getDefaultUnit(B);return true;},init:function(C,H,G,A){var B=false;var D=null;var F=0;C=YAHOO.util.Dom.get(C);this.attributes=H||{};this.duration=!YAHOO.lang.isUndefined(G)?G:1;this.method=A||YAHOO.util.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=YAHOO.util.AnimMgr.fps;this.setEl=function(K){C=YAHOO.util.Dom.get(K);};this.getEl=function(){return C;};this.isAnimated=function(){return B;};this.getStartTime=function(){return D;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(YAHOO.util.AnimMgr.fps*this.duration):this.duration;if(this.duration===0&&this.useSeconds){this.totalFrames=1;}YAHOO.util.AnimMgr.registerElement(this);return true;};this.stop=function(K){if(!this.isAnimated()){return false;}if(K){this.currentFrame=this.totalFrames;this._onTween.fire();}YAHOO.util.AnimMgr.stop(this);};var J=function(){this.onStart.fire();this.runtimeAttributes={};for(var K in this.attributes){this.setRuntimeAttribute(K);}B=true;F=0;D=new Date();};var I=function(){var M={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};M.toString=function(){return("duration: "+M.duration+",currentFrame: "+M.currentFrame);};this.onTween.fire(M);var L=this.runtimeAttributes;for(var K in L){this.setAttribute(K,this.doMethod(K,L[K].start,L[K].end),L[K].unit);}F+=1;};var E=function(){var K=(new Date()-D)/1000;var L={duration:K,frames:F,fps:F/K};L.toString=function(){return("duration: "+L.duration+",frames: "+L.frames+",fps: "+L.fps);};B=false;F=0;this.onComplete.fire(L);};this._onStart=new YAHOO.util.CustomEvent("_start",this,true);this.onStart=new YAHOO.util.CustomEvent("start",this);this.onTween=new YAHOO.util.CustomEvent("tween",this);this._onTween=new YAHOO.util.CustomEvent("_tween",this,true);this.onComplete=new YAHOO.util.CustomEvent("complete",this);this._onComplete=new YAHOO.util.CustomEvent("_complete",this,true);this._onStart.subscribe(J);this._onTween.subscribe(I);this._onComplete.subscribe(E);}};YAHOO.util.AnimMgr=new function(){var C=null;var B=[];var A=0;this.fps=1000;this.delay=1;this.registerElement=function(F){B[B.length]=F;A+=1;F._onStart.fire();this.start();};this.unRegister=function(G,F){F=F||E(G);if(!G.isAnimated()||F==-1){return false;}G._onComplete.fire();B.splice(F,1);A-=1;if(A<=0){this.stop();}return true;};this.start=function(){if(C===null){C=setInterval(this.run,this.delay);}};this.stop=function(H){if(!H){clearInterval(C);for(var G=0,F=B.length;G<F;++G){this.unRegister(B[0],0);}B=[];C=null;A=0;}else{this.unRegister(H);}};this.run=function(){for(var H=0,F=B.length;H<F;++H){var G=B[H];if(!G||!G.isAnimated()){continue;}if(G.currentFrame<G.totalFrames||G.totalFrames===null){G.currentFrame+=1;if(G.useSeconds){D(G);}G._onTween.fire();}else{YAHOO.util.AnimMgr.stop(G,H);}}};var E=function(H){for(var G=0,F=B.length;G<F;++G){if(B[G]==H){return G;}}return -1;};var D=function(G){var J=G.totalFrames;var I=G.currentFrame;var H=(G.currentFrame*G.duration*1000/G.totalFrames);var F=(new Date()-G.getStartTime());var K=0;if(F<G.duration*1000){K=Math.round((F/H-1)*G.currentFrame);}else{K=J-(I+1);}if(K>0&&isFinite(K)){if(G.currentFrame+K>=J){K=J-(I+1);}G.currentFrame+=K;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(E,D){var F=E.length;var C=[];for(var B=0;B<F;++B){C[B]=[E[B][0],E[B][1]];}for(var A=1;A<F;++A){for(B=0;B<F-A;++B){C[B][0]=(1-D)*C[B][0]+D*C[parseInt(B+1,10)][0];C[B][1]=(1-D)*C[B][1]+D*C[parseInt(B+1,10)][1];}}return[C[0][0],C[0][1]];};};(function(){YAHOO.util.ColorAnim=function(E,D,F,G){YAHOO.util.ColorAnim.superclass.constructor.call(this,E,D,F,G);};YAHOO.extend(YAHOO.util.ColorAnim,YAHOO.util.Anim);var B=YAHOO.util;var C=B.ColorAnim.superclass;var A=B.ColorAnim.prototype;A.toString=function(){var D=this.getEl();var E=D.id||D.tagName;return("ColorAnim "+E);};A.patterns.color=/color$/i;A.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;A.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;A.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;A.patterns.transparent=/^transparent|rgba\(0,0,0,0\)$/;A.parseColor=function(D){if(D.length==3){return D;}var E=this.patterns.hex.exec(D);if(E&&E.length==4){return[parseInt(E[1],16),parseInt(E[2],16),parseInt(E[3],16)];}E=this.patterns.rgb.exec(D);if(E&&E.length==4){return[parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10)];
}E=this.patterns.hex3.exec(D);if(E&&E.length==4){return[parseInt(E[1]+E[1],16),parseInt(E[2]+E[2],16),parseInt(E[3]+E[3],16)];}return null;};A.getAttribute=function(D){var F=this.getEl();if(this.patterns.color.test(D)){var G=YAHOO.util.Dom.getStyle(F,D);if(this.patterns.transparent.test(G)){var E=F.parentNode;G=B.Dom.getStyle(E,D);while(E&&this.patterns.transparent.test(G)){E=E.parentNode;G=B.Dom.getStyle(E,D);if(E.tagName.toUpperCase()=="HTML"){G="#fff";}}}}else{G=C.getAttribute.call(this,D);}return G;};A.doMethod=function(E,I,F){var H;if(this.patterns.color.test(E)){H=[];for(var G=0,D=I.length;G<D;++G){H[G]=C.doMethod.call(this,E,I[G],F[G]);}H="rgb("+Math.floor(H[0])+","+Math.floor(H[1])+","+Math.floor(H[2])+")";}else{H=C.doMethod.call(this,E,I,F);}return H;};A.setRuntimeAttribute=function(E){C.setRuntimeAttribute.call(this,E);if(this.patterns.color.test(E)){var G=this.attributes;var I=this.parseColor(this.runtimeAttributes[E].start);var F=this.parseColor(this.runtimeAttributes[E].end);if(typeof G[E]["to"]==="undefined"&&typeof G[E]["by"]!=="undefined"){F=this.parseColor(G[E].by);for(var H=0,D=I.length;H<D;++H){F[H]=I[H]+F[H];}}this.runtimeAttributes[E].start=I;this.runtimeAttributes[E].end=F;}};})();YAHOO.util.Easing={easeNone:function(B,A,D,C){return D*B/C+A;},easeIn:function(B,A,D,C){return D*(B/=C)*B+A;},easeOut:function(B,A,D,C){return -D*(B/=C)*(B-2)+A;},easeBoth:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B+A;}return -D/2*((--B)*(B-2)-1)+A;},easeInStrong:function(B,A,D,C){return D*(B/=C)*B*B*B+A;},easeOutStrong:function(B,A,D,C){return -D*((B=B/C-1)*B*B*B-1)+A;},easeBothStrong:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B*B*B+A;}return -D/2*((B-=2)*B*B*B-2)+A;},elasticIn:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}return -(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;},elasticOut:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}return B*Math.pow(2,-10*C)*Math.sin((C*F-D)*(2*Math.PI)/E)+G+A;},elasticBoth:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F/2)==2){return A+G;}if(!E){E=F*(0.3*1.5);}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}if(C<1){return -0.5*(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;}return B*Math.pow(2,-10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E)*0.5+G+A;},backIn:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}return E*(B/=D)*B*((C+1)*B-C)+A;},backOut:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}return E*((B=B/D-1)*B*((C+1)*B+C)+1)+A;},backBoth:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}if((B/=D/2)<1){return E/2*(B*B*(((C*=(1.525))+1)*B-C))+A;}return E/2*((B-=2)*B*(((C*=(1.525))+1)*B+C)+2)+A;},bounceIn:function(B,A,D,C){return D-YAHOO.util.Easing.bounceOut(C-B,0,D,C)+A;},bounceOut:function(B,A,D,C){if((B/=C)<(1/2.75)){return D*(7.5625*B*B)+A;}else{if(B<(2/2.75)){return D*(7.5625*(B-=(1.5/2.75))*B+0.75)+A;}else{if(B<(2.5/2.75)){return D*(7.5625*(B-=(2.25/2.75))*B+0.9375)+A;}}}return D*(7.5625*(B-=(2.625/2.75))*B+0.984375)+A;},bounceBoth:function(B,A,D,C){if(B<C/2){return YAHOO.util.Easing.bounceIn(B*2,0,D,C)*0.5+A;}return YAHOO.util.Easing.bounceOut(B*2-C,0,D,C)*0.5+D*0.5+A;}};(function(){YAHOO.util.Motion=function(G,F,H,I){if(G){YAHOO.util.Motion.superclass.constructor.call(this,G,F,H,I);}};YAHOO.extend(YAHOO.util.Motion,YAHOO.util.ColorAnim);var D=YAHOO.util;var E=D.Motion.superclass;var B=D.Motion.prototype;B.toString=function(){var F=this.getEl();var G=F.id||F.tagName;return("Motion "+G);};B.patterns.points=/^points$/i;B.setAttribute=function(F,H,G){if(this.patterns.points.test(F)){G=G||"px";E.setAttribute.call(this,"left",H[0],G);E.setAttribute.call(this,"top",H[1],G);}else{E.setAttribute.call(this,F,H,G);}};B.getAttribute=function(F){if(this.patterns.points.test(F)){var G=[E.getAttribute.call(this,"left"),E.getAttribute.call(this,"top")];}else{G=E.getAttribute.call(this,F);}return G;};B.doMethod=function(F,J,G){var I=null;if(this.patterns.points.test(F)){var H=this.method(this.currentFrame,0,100,this.totalFrames)/100;I=D.Bezier.getPosition(this.runtimeAttributes[F],H);}else{I=E.doMethod.call(this,F,J,G);}return I;};B.setRuntimeAttribute=function(O){if(this.patterns.points.test(O)){var G=this.getEl();var I=this.attributes;var F;var K=I["points"]["control"]||[];var H;var L,N;if(K.length>0&&!(K[0] instanceof Array)){K=[K];}else{var J=[];for(L=0,N=K.length;L<N;++L){J[L]=K[L];}K=J;}if(D.Dom.getStyle(G,"position")=="static"){D.Dom.setStyle(G,"position","relative");}if(C(I["points"]["from"])){D.Dom.setXY(G,I["points"]["from"]);}else{D.Dom.setXY(G,D.Dom.getXY(G));}F=this.getAttribute("points");if(C(I["points"]["to"])){H=A.call(this,I["points"]["to"],F);var M=D.Dom.getXY(this.getEl());for(L=0,N=K.length;L<N;++L){K[L]=A.call(this,K[L],F);}}else{if(C(I["points"]["by"])){H=[F[0]+I["points"]["by"][0],F[1]+I["points"]["by"][1]];for(L=0,N=K.length;L<N;++L){K[L]=[F[0]+K[L][0],F[1]+K[L][1]];}}}this.runtimeAttributes[O]=[F];if(K.length>0){this.runtimeAttributes[O]=this.runtimeAttributes[O].concat(K);}this.runtimeAttributes[O][this.runtimeAttributes[O].length]=H;}else{E.setRuntimeAttribute.call(this,O);}};var A=function(F,H){var G=D.Dom.getXY(this.getEl());F=[F[0]-G[0]+H[0],F[1]-G[1]+H[1]];return F;};var C=function(F){return(typeof F!=="undefined");};})();(function(){YAHOO.util.Scroll=function(E,D,F,G){if(E){YAHOO.util.Scroll.superclass.constructor.call(this,E,D,F,G);}};YAHOO.extend(YAHOO.util.Scroll,YAHOO.util.ColorAnim);var B=YAHOO.util;var C=B.Scroll.superclass;var A=B.Scroll.prototype;A.toString=function(){var D=this.getEl();var E=D.id||D.tagName;return("Scroll "+E);};A.doMethod=function(D,G,E){var F=null;if(D=="scroll"){F=[this.method(this.currentFrame,G[0],E[0]-G[0],this.totalFrames),this.method(this.currentFrame,G[1],E[1]-G[1],this.totalFrames)];
}else{F=C.doMethod.call(this,D,G,E);}return F;};A.getAttribute=function(D){var F=null;var E=this.getEl();if(D=="scroll"){F=[E.scrollLeft,E.scrollTop];}else{F=C.getAttribute.call(this,D);}return F;};A.setAttribute=function(D,G,F){var E=this.getEl();if(D=="scroll"){E.scrollLeft=G[0];E.scrollTop=G[1];}else{C.setAttribute.call(this,D,G,F);}};})();YAHOO.register("animation",YAHOO.util.Anim,{version:"2.4.1",build:"742"});
if(typeof YAHOO=="undefined"){throw"Unable to load Shadowbox,core YUI utilities (yahoo,dom,event,anim) not found."}var Shadowbox={};Shadowbox.lib=function(){var A=YAHOO.util.Event;var B=YAHOO.util.Dom;return{getStyle:function(D,C){return B.getStyle(D,C)},setStyle:function(F,E,G){if(typeof E!="object"){var C={};C[E]=G;E=C}for(var D in E){B.setStyle(F,D,E[D])}},get:function(C){return B.get(C)},remove:function(C){C.parentNode.removeChild(C)},getTarget:function(C){return A.getTarget(C.browserEvent||C)},preventDefault:function(C){A.preventDefault(C.browserEvent||C)},addEvent:function(E,C,D){A.addListener(E,C,D)},removeEvent:function(E,C,D){A.removeListener(E,C,D)},animate:function(C,G,F,H){var E=new YAHOO.util.Anim(C,G,F,YAHOO.util.Easing.easeOut);if(typeof H=="function"){var D=function(){E.onComplete.unsubscribe(D);H.call(E,E)};E.onComplete.subscribe(D,E,true)}E.animate()}}}()
if(typeof Shadowbox=="undefined"){
throw"Unable to load Shadowbox,no base library adapter found."
}
(
function(){
var version="1.0b7";
var options={
animate:true,animSequence:"wh",overlayColor:"#000",overlayOpacity:0.40,resizeDuration:0.15,fadeDuration:0.35,displayNav:true,continuous:false,displayCounter:true,counterType:"default",viewportPadding:20,handleLgImages:"drag",initialHeight:60,initialWidth:100,enableKeys:true,keysClose:["c","q",27],onOpen:null,onFinish:null,onClose:null,handleUnsupported:"link",skipSetup:false,text:{
close:'<span class="shortcut">C</span>lose',errors:{
single:'You must install the <a href="{0}">{1}</a> browser plugin to view this content.',shared:'You must install both the <a href="{0}">{1}</a> and <a href="{2}">{3}</a> browser plugins to view this content.',either:'You must install either the <a href="{0}">{1}</a> or the <a href="{2}">{3}</a> browser plugin to view this content.'
}
},skin:{
main:	'<div id="shadowbox_overlay"></div>' +
'<div id="shadowbox_container">' +
'<div id="shadowbox">' +
'<div id="shadowbox_2"></div>' +
'<div id="shadowbox_1" style="padding:0 20px 20px 20px;">' +
'<div id="shadowbox_title">' +
'<div id="shadowbox_title_inner"></div>' +
'<div id="shadowbox_nav_close">' +
'<a href="javascript:Shadowbox.close();">x</a>' +
'</div>' +
'</div>' +
'<div id="shadowbox_body">' +
'<div id="shadowbox_body_inner" style="height:542px;">' +
'</div>' +
'<div id="shadowbox_loading"></div>' +
'</div>' +
'<div id="shadowbox_toolbar">' +
'<div id="shadowbox_toolbar_inner"></div>' +
'</div>' +
'</div>' +
'</div>' +
'</div>',close:'',next:'<div id="shadowbox_nav_next"><a href="javascript:Shadowbox.next();">{0}</a></div>',prev:'<div id="shadowbox_nav_previous"><a href="javascript:Shadowbox.previous();">{0}</a></div>'
},ext:{
img:["png","jpg","jpeg","gif","bmp"],qt:["dv","mov","moov","movie","mp4"],wmp:["asf","wm","wmv"],qtwmp:["avi","mpg","mpeg"],iframe:["asp","aspx","cgi","cfm","htm","html","pl","php","php3","php4","php5","phtml","rb","rhtml","shtml","txt","vbs"]
}
};
var default_options=null;
var SL=Shadowbox.lib;
var RE={
resize:/(img|swf|flv)/,swf:/\.swf\s*$/i,flv:/\.flv\s*$/i,domain:/:\/\/(.*?)[:\/]/,inline:/#(.+)$/,rel:/^shadowbox/i,gallery:/^shadowbox\[(.*?)\]/i,unsupported:/^unsupported-(\w+)/,param:/\s*([a-z_]*?)\s*=\s*(.+)\s*/,empty:/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i
};
var cache=[];
var current_gallery;
var current;
var optimal_height=options.initialHeight;
var optimal_width=options.initialWidth;
var current_height=0;var current_width=0;
var preloader;
var initialized=false;
var activated=false;
var drag;
var draggable;
var overlay_img_needed;
var ua=navigator.userAgent.toLowerCase();
var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isIE=ua.indexOf("msie")>-1,isIE7=ua.indexOf("msie 7")>-1,isBorderBox=isIE&&!isStrict,isSafari=(/webkit|khtml/).test(ua),isSafari3=isSafari&&!!(document.evaluate),isGecko=!isSafari&&ua.indexOf("gecko")>-1,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isLinux=(ua.indexOf("linux")!=-1);
var absolute_pos=isIE&&!isIE7;
var plugins=null;
if(navigator.plugins&&navigator.plugins.length){
var detectPlugin=function(plugin_name){
var detected=false;
for(var i=0,len=navigator.plugins.length;i<len;++i){
if(navigator.plugins[i].name.indexOf(plugin_name)>-1){
detected=true;
break
}
}
return detected
};
var f4m=detectPlugin("Flip4Mac");
var plugins={
fla:detectPlugin("Shockwave Flash"),qt:detectPlugin("QuickTime"),wmp:!f4m&&detectPlugin("Windows Media"),f4m:f4m
}
}
else{
var detectPlugin=function(plugin_name){
var detected=false;
try{
var axo=new ActiveXObject(plugin_name);
if(axo){detected=true}
}
catch(e){}
return detected
};
var plugins={
fla:detectPlugin("ShockwaveFlash.ShockwaveFlash"),qt:detectPlugin("QuickTime.QuickTime"),wmp:detectPlugin("wmplayer.ocx"),f4m:false
}
}
var apply=function(o,e){
if(o&&e&&typeof e=="object"){
for(var p in e){
o[p]=e[p]
}
}
return o
};
SL.getViewportHeight=function(){
var height=window.innerHeight;
var mode=document.compatMode;
if((mode||isIE)&&!isOpera){
height=isStrict?document.documentElement.clientHeight:document.body.clientHeight
}
return height
};
SL.getViewportWidth=function(){
var width=window.innerWidth;
var mode=document.compatMode;
if(mode||isIE){
width=isStrict?document.documentElement.clientWidth:document.body.clientWidth
}
return width
};
SL.getDocumentHeight=function(){
var scrollHeight=isStrict?document.documentElement.scrollHeight:document.body.scrollHeight;
return Math.max(scrollHeight,SL.getViewportHeight())
};
SL.getDocumentWidth=function(){
var scrollWidth=isStrict?document.documentElement.scrollWidth:document.body.scrollWidth;
return Math.max(scrollWidth,SL.getViewportWidth())
};
var clearOpacity=function(el){
if(isIE){
if(typeof el.style.filter=="string"&&(/alpha/i).test(el.style.filter)){
el.style.filter=""
}
}
else{
el.style.opacity="";
el.style["-moz-opacity"]="";
el.style["-khtml-opacity"]=""
}
};
var fadeIn=function(el,endingOpacity,duration,callback){
if(options.animate){
SL.setStyle(el,"opacity",0);
el.style.visibility="visible";
SL.animate(el,{
opacity:{to:endingOpacity}
},duration,function(){
if(endingOpacity==1){
clearOpacity(el)
}
if(typeof callback=="function"){
callback()
}
}
)
}
else{
if(endingOpacity==1){
clearOpacity(el)
}
else{
SL.setStyle(el,"opacity",endingOpacity)
}
el.style.visibility="visible";
if(typeof callback=="function"){
callback()
}
}
};
var fadeOut=function(el,duration,callback){
var cb=function(){
el.style.visibility="hidden";
clearOpacity(el);
if(typeof callback=="function"){
callback()
}
};
if(options.animate){
SL.animate(el,{opacity:{to:0}},duration,cb)
}
else{
cb()
}
};
var appendHTML=function(el,html){
el=SL.get(el);
if(el.insertAdjacentHTML){
el.insertAdjacentHTML("BeforeEnd",html);
return el.lastChild
}
if(el.lastChild){
var range=el.ownerDocument.createRange();
range.setStartAfter(el.lastChild);
var frag=range.createContextualFragment(html);
el.appendChild(frag);
return el.lastChild
}
else{
el.innerHTML=html;
return el.lastChild
}
};
var overwriteHTML=function(el,html){
el=SL.get(el);
el.innerHTML=html;
return el.firstChild
};
var getComputedHeight=function(el){
var h=Math.max(el.offsetHeight,el.clientHeight);
if(!h){
h=parseInt(SL.getStyle(el,"height"),10)||0;
if(!isBorderBox){
h+=parseInt(SL.getStyle(el,"padding-top"),10)+parseInt(SL.getStyle(el,"padding-bottom"),10)+parseInt(SL.getStyle(el,"border-top-width"),10)+parseInt(SL.getStyle(el,"border-bottom-width"),10)
}
}
return h
};
var getComputedWidth=function(el){
var w=Math.max(el.offsetWidth,el.clientWidth);
if(!w){
w=parseInt(SL.getStyle(el,"width"),10)||0;
if(!isBorderBox){
w+=parseInt(SL.getStyle(el,"padding-left"),10)+parseInt(SL.getStyle(el,"padding-right"),10)+parseInt(SL.getStyle(el,"border-left-width"),10)+parseInt(SL.getStyle(el,"border-right-width"),10)
}
}
return w
};
var getPlayerType=function(url){
if(RE.img.test(url)){
return"img"
}
var this_domain=(domain_match=url.match(RE.domain))?(document.domain==domain_match[1]):false;
if(url.indexOf("#")>-1&&this_domain){
return"html"
}
var q_index=url.indexOf("?");
if(q_index>-1){
url=url.substring(0,q_index)
}
if(RE.swf.test(url)){
return(plugins.fla)?"swf":"unsupported-swf"
}
if(RE.flv.test(url)){
return(plugins.fla)?"flv":"unsupported-flv"
}
if(RE.qt.test(url)){
return(plugins.qt)?"qt":"unsupported-qt"
}
if(RE.wmp.test(url)){
if(plugins.wmp){
return"wmp"
}
else{
if(plugins.f4m){
return"qt"
}
else{
if(isMac){
return(plugins.qt?"unsupported-f4m":"unsupported-qtf4m")
}
return"unsupported-wmp"
}
}
}
else{
if(RE.qtwmp.test(url)){
if(plugins.qt){
return"qt"
}
else{
if(plugins.wmp){
return"wmp"
}
else{
return(isMac?"unsupported-qt":"unsupported-qtwmp")
}
}
}
else{
if(!this_domain||RE.iframe.test(url)){
return"iframe"
}
}
}
return"unsupported"
};
var getGallery=function(link){
var key=link.shadowboxCacheKey;
var name=cache[key].gallery;
if(!name){
return[[apply({},cache[key])],0]
}
else{
var gallery=[],index;
for(var i=0,len=cache.length;i<len;++i){
if(key==i){
index=gallery.length;
gallery[gallery.length]=apply({},cache[i])
}
else{
if(cache[i].gallery&&cache[i].gallery==name){
gallery[gallery.length]=apply({},cache[i])
}
}
}
if(index==null){
throw"No Shadowbox cache item with index "+key
}
return[gallery,index]
}
};
var setupGallery=function(link){
var gallery_info=getGallery(link);
current_gallery=gallery_info[0];
current=gallery_info[1];
var match;
for(var i=0;i<current_gallery.length;++i){
if(match=RE.unsupported.exec(current_gallery[i].type)){
if(options.handleUnsupported=="link"){
current_gallery[i].type="html";
var m;
switch(match[1]){
case"qtwmp":
m=String.format(options.text.errors.either,options.errors.qt.url,options.errors.qt.name,options.errors.wmp.url,options.errors.wmp.name);
break;
case"qtf4m":
m=String.format(options.text.errors.shared,options.errors.qt.url,options.errors.qt.name,options.errors.f4m.url,options.errors.f4m.name);
break;
default:
if(match[1]=="swf"||match[1]=="flv"){
match[1]="fla"
}
m=String.format(options.text.errors.single,options.errors[match[1]].url,options.errors[match[1]].name)
}
current_gallery[i]=apply(current_gallery[i],{
height:options.initialHeight,width:options.initialWidth,html:Shadowbox.createHTML({tag:"div",cls:"shadowbox_message",html:m})
}
)
}
else{
current_gallery.splice(i,1);
if(i<current){
--current
}
--i
}
}
else{
if(current_gallery[i].type=="html"){
var match=RE.inline.exec(current_gallery[i].href);
if(match){
var el;
if(el=SL.get(match[1])){
current_gallery[i].html=el.innerHTML
}
else{
throw"No element found with id "+match[1]
}
}
else{
throw"No element id found for inline content"
}
}
}
}
};
var handleClick=function(ev){
if(activated){
return
}
activated=true;
var link;
if(typeof this.tagName=="string"&&this.tagName.toUpperCase()=="A"){
link=this
}
else{
link=SL.getTarget(ev);
while(link.tagName.toUpperCase()!="A"&&link.parentNode){
link=link.parentNode
}
}
setupGallery(link);
if(current_gallery.length){
SL.preventDefault(ev);
openContent(link)
}
};
var buildBars=function(){
var link=current_gallery[current];
if(!link){
return
}
var title_i=SL.get("shadowbox_title_inner");
title_i.innerHTML=(link.title)?link.title:"";
var tool_i=SL.get("shadowbox_toolbar_inner");
tool_i.innerHTML="";
if(options.displayNav){
tool_i.innerHTML=String.format(options.skin.close,options.text.close);
if(current_gallery.length>1){
if(options.continuous){
appendHTML(tool_i,String.format(options.skin.next,options.text.next));
appendHTML(tool_i,String.format(options.skin.prev,options.text.prev))
}
else{
if((current_gallery.length-1)>current){
appendHTML(tool_i,String.format(options.skin.next,options.text.next))
}
if(current>0){
appendHTML(tool_i,String.format(options.skin.prev,options.text.prev))
}
}
}
}
if(current_gallery.length>1&&options.displayCounter){
var counter="";
if(options.counterType=="skip"){
for(var i=0,len=current_gallery.length;i<len;++i){
counter+='<a href="javascript:Shadowbox.change('+i+');"';
if(i==current){
counter+=' class="shadowbox_counter_current"'
}
counter+=">"+(i+1)+"</a>"
}
}
else{
counter=(current+1)+" of "+current_gallery.length
}
appendHTML(tool_i,String.format(options.skin.counter,counter))
}
};
var hideBars=function(callback){
var title_m=getComputedHeight(SL.get("shadowbox_title"));
var tool_m=0-getComputedHeight(SL.get("shadowbox_toolbar"));
var title_i=SL.get("shadowbox_title_inner");
var tool_i=SL.get("shadowbox_toolbar_inner");
if(options.animate&&callback){
SL.animate(title_i,{marginTop:{to:title_m}},0.2);
SL.animate(tool_i,{marginTop:{to:tool_m}},0.2,callback)
}
else{
SL.setStyle(title_i,"marginTop",title_m+"px");
SL.setStyle(tool_i,"marginTop",tool_m+"px")
}
};
var showBars=function(callback){
var title_i=SL.get("shadowbox_title_inner");
if(options.animate){
if(title_i.innerHTML!=""){
SL.animate(title_i,{marginTop:{to:0}},0.35)
}
SL.animate(SL.get("shadowbox_toolbar_inner"),{marginTop:{to:0}},0.35,callback)
}
else{
if(title_i.innerHTML!=""){
SL.setStyle(title_i,"margin-top","0px")
}
SL.setStyle(SL.get("shadowbox_toolbar_inner"),"margin-top","0px");
callback()
}
};
var resetDrag=function(){
drag={x:0,y:0,start_x:null,start_y:null}
};
var toggleDrag=function(on){
if(on){
resetDrag();
var styles=["position:absolute","cursor:"+(isGecko?"-moz-grab":"move")];
styles.push(isIE?"background-color:#fff;filter:alpha(opacity=0)":"background-color:transparent");
appendHTML("shadowbox_body_inner",'<div id="shadowbox_drag_layer" style="'+styles.join(";")+'"></div>');
SL.addEvent(SL.get("shadowbox_drag_layer"),"mousedown",listenDrag)
}
else{
var d=SL.get("shadowbox_drag_layer");
if(d){
SL.removeEvent(d,"mousedown",listenDrag);
SL.remove(d)
}
}
};
var listenDrag=function(ev){
drag.start_x=ev.clientX;
drag.start_y=ev.clientY;
draggable=SL.get("shadowbox_content");
SL.addEvent(document,"mousemove",positionDrag);
SL.addEvent(document,"mouseup",unlistenDrag);
if(isGecko){
SL.setStyle(SL.get("shadowbox_drag_layer"),"cursor","-moz-grabbing")
}
};
var unlistenDrag=function(){
SL.removeEvent(document,"mousemove",positionDrag);
SL.removeEvent(document,"mouseup",unlistenDrag);
if(isGecko){
SL.setStyle(SL.get("shadowbox_drag_layer"),"cursor","-moz-grab")
}
};
var positionDrag=function(ev){
var move_y=ev.clientY-drag.start_y;
drag.start_y=drag.start_y+move_y;
drag.y=Math.max(Math.min(0,drag.y+move_y),current_height-optimal_height);
SL.setStyle(draggable,"top",drag.y+"px");
var move_x=ev.clientX-drag.start_x;
drag.start_x=drag.start_x+move_x;
drag.x=Math.max(Math.min(0,drag.x+move_x),current_width-optimal_width-(2*options.viewportPadding));
SL.setStyle(draggable,"left",drag.x+"px")
};
var openContent=function(link){
if(default_options){
options=default_options;
default_options=null
}
if(current_gallery[current].options){
default_options=apply({},options);
options=apply(options,current_gallery[current].options)
}
if(options.onOpen&&typeof options.onOpen=="function"){
options.onOpen(link)
}
SL.setStyle(SL.get("shadowbox"),"display","block");
toggleTroubleElements(false);
var dims=getDimensions(options.initialHeight,options.initialWidth);
adjustHeight(dims.height,dims.top);
adjustWidth(dims.width);
hideBars(false);
toggleOverlay(function(){
SL.setStyle(SL.get("shadowbox"),"visibility","visible");
showLoading();
loadContent()
}
)
};
var setContent=function(obj){
var id="shadowbox_content";
var content=SL.get(id);
if(content){
switch(content.tagName.toUpperCase()){
case"OBJECT":
var link=current_gallery[(obj?current-1:current)];
if(link.type=="wmp"&&isIE){
try{
shadowbox_content.controls.stop();
shadowbox_content.URL="non-existent.wmv";
window.shadowbox_content=function(){}
}
catch(e){}
}
else{
if(link.type=="qt"&&isSafari){
try{
document.shadowbox_content.Stop()
}
catch(e){}
content.innerHTML=""
}
}
setTimeout(function(){SL.remove(content)},10);
break;
case"IFRAME":
SL.remove(content);
if(isGecko){
delete window.frames[id]
}
break;
default:
SL.remove(content)
}
}
if(obj){
if(!obj.id){
obj.id=id
}
return appendHTML("shadowbox_body_inner",Shadowbox.createHTML(obj))
}
return null
};
var loadContent=function(){
var link=current_gallery[current];
if(!link){
return
}
buildBars();
switch(link.type){
case"img":
preloader=new Image();
preloader.onload=function(){
var h=link.height?parseInt(link.height,10):preloader.height;
var w=link.width?parseInt(link.width,10):preloader.width;
resizeContent(preloader.height,preloader.width,function(dims){
showBars(function(){
setContent({
tag:"img",height:dims.i_height,width:dims.i_width,src:link.href,style:"position:absolute"
}
);
if(dims.enableDrag&&options.handleLgImages=="drag"){
toggleDrag(true);
SL.setStyle(SL.get("shadowbox_drag_layer"),{
height:dims.i_height+"px",width:dims.i_width+"px"
}
)
}
finishContent()
}
)
}
);
preloader.onload=function(){}};
preloader.src=link.href;
break;
case"swf":case"flv":case"qt":case"wmp":
var markup=Shadowbox.movieMarkup(link);
resizeContent(markup.height,markup.width,function(){
showBars(function(){
setContent(markup);
finishContent()
}
)
}
);
break;
case"iframe":
var h=link.height?parseInt(link.height,10):SL.getViewportHeight();
var w=link.width?parseInt(link.width,10):SL.getViewportWidth();
var content={
tag:"iframe",name:"shadowbox_content",height:"100%",width:"100%",frameborder:"0",marginwidth:"0",marginheight:"0",scrolling:"no"
};
resizeContent(h,w,function(dims){
showBars(function(){
setContent(content);
var win=(isIE)?SL.get("shadowbox_content").contentWindow:window.frames["shadowbox_content"];
win.location=link.href;
finishContent()
}
)
}
);
break;
case"html":
var h=link.height?parseInt(link.height,10):SL.getViewportHeight();
var w=link.width?parseInt(link.width,10):SL.getViewportWidth();
var content={
tag:"div",cls:"html",html:link.html
};
resizeContent(h,w,function(){
showBars(function(){
setContent(content);
finishContent()
}
)
}
);
break;
case"unsupported":
throw"Content type cannot be determined for "+link.href;
break
}
if(current_gallery.length>0){
var next=current_gallery[current+1];
if(!next){
next=current_gallery[0]
}
if(next.type=="img"){
var preload_next=new Image();
preload_next.src=next.href
}
var prev=current_gallery[current-1];
if(!prev){
prev=current_gallery[current_gallery.length-1]
}
if(prev.type=="img"){
var preload_prev=new Image();
preload_prev.src=prev.href
}
}
};
var finishContent=function(){
var link=current_gallery[current];
if(!link){return }
hideLoading(function(){
listenKeyboard(true);
if(options.onFinish&&typeof options.onFinish=="function"){
options.onFinish(link.el)
}
}
)
};
var resizeContent=function(height,width,callback){
optimal_height=height;
optimal_width=width;
var resizable=RE.resize.test(current_gallery[current].type);
var dims=getDimensions(optimal_height,optimal_width,resizable);
if(callback){
var cb=function(){
callback(dims)
};
switch(options.animSequence){
case"hw":
adjustHeight(dims.height,dims.top,true,function(){adjustWidth(dims.width,true,cb)});
break;
case"wh":
adjustWidth(dims.width,true,function(){adjustHeight(dims.height,dims.top,true,cb)});
break;
default:
adjustWidth(dims.width,true);
adjustHeight(dims.height,dims.top,true,cb)
}
}
else{
adjustWidth(dims.width,false);
adjustHeight(dims.height,dims.top,false);
if(options.handleLgImages=="resize"&&resizable){
var content=SL.get("shadowbox_content");
if(content){content.height=dims.i_height;content.width=dims.i_width}
}
}
};
var getDimensions=function(o_height,o_width,resizable){
if(typeof resizable=="undefined"){resizable=false}
var height=o_height=parseInt(o_height);
var width=o_width=parseInt(o_width);
var shadowbox_b=SL.get("shadowbox_body");
var view_height=SL.getViewportHeight();
var extra_height=parseInt(SL.getStyle(shadowbox_b,"border-top-width"),10)+parseInt(SL.getStyle(shadowbox_b,"border-bottom-width"),10)+parseInt(SL.getStyle(shadowbox_b,"margin-top"),10)+parseInt(SL.getStyle(shadowbox_b,"margin-bottom"),10)+getComputedHeight(SL.get("shadowbox_title"))+getComputedHeight(SL.get("shadowbox_toolbar"))+(2*options.viewportPadding);
if((height+extra_height)>=view_height){height=view_height-extra_height}
var view_width=SL.getViewportWidth();
var extra_body_width=parseInt(SL.getStyle(shadowbox_b,"border-left-width"),10)+parseInt(SL.getStyle(shadowbox_b,"border-right-width"),10)+parseInt(SL.getStyle(shadowbox_b,"margin-left"),10)+parseInt(SL.getStyle(shadowbox_b,"margin-right"),10)+(2*options.viewportPadding);
var extra_width=extra_body_width+(2*options.viewportPadding);
if((width+extra_width)>=view_width){width=view_width-extra_width}
var enableDrag=false;
var i_height=o_height;
var i_width=o_width;
var handle=options.handleLgImages;
if(resizable&&(handle=="resize"||handle=="drag")){
var change_h=(o_height-height)/o_height;
var change_w=(o_width-width)/o_width;
if(handle=="resize"){
if(change_h>change_w){width=Math.round((o_width/o_height)*height)}
else{
if(change_w>change_h){
height=Math.round((o_height/o_width)*width)
}
}
i_width=width;
i_height=height
}
else{
var link=current_gallery[current];
if(link){
enableDrag=link.type=="img"&&(change_h>0||change_w>0)
}
}
}
return{
height:height,width:width+extra_body_width,i_height:i_height,i_width:i_width,top:((view_height-(height+extra_height))/2)+options.viewportPadding,enableDrag:enableDrag
}
};
var centerVertically=function(){
var shadowbox=SL.get("shadowbox");
var scroll=document.documentElement.scrollTop;
var s_top=scroll+Math.round((SL.getViewportHeight()-(shadowbox.offsetHeight||0))/2);
SL.setStyle(shadowbox,"top",s_top+"px")
};
var adjustHeight=function(height,top,animate,callback){
height=parseInt(height);
current_height=height;
var sbi=SL.get("shadowbox_body_inner");
if(animate&&options.animate){
SL.animate(sbi,{height:{to:height}},options.resizeDuration,callback)
}
else{
SL.setStyle(sbi,"height",height+"px");
if(typeof callback=="function"){callback()}
}
if(absolute_pos){
centerVertically();
SL.addEvent(window,"scroll",centerVertically);
top+=document.documentElement.scrollTop
}
var shadowbox=SL.get("shadowbox");
if(animate&&options.animate){
SL.animate(shadowbox,{top:{to:top}},options.resizeDuration)
}
else{
SL.setStyle(shadowbox,"top",top+"px")
}
};
var adjustWidth=function(width,animate,callback){
width=parseInt(width);
current_width=width;
var shadowbox=SL.get("shadowbox");
if(animate&&options.animate){
SL.animate(shadowbox,{width:{to:width}},options.resizeDuration,callback)
}
else{
SL.setStyle(shadowbox,"width",width+"px");
if(typeof callback=="function"){callback()}
}
};
var listenKeyboard=function(on){
if(!options.enableKeys){return }
if(on){document.onkeydown=handleKey}
else{document.onkeydown=""}
};
var assertKey=function(valid,key,code){
return(valid.indexOf(key)!=-1||valid.indexOf(code)!=-1)
};
var handleKey=function(e){
var code=e?e.which:event.keyCode;
var key=String.fromCharCode(code).toLowerCase();
if(assertKey(options.keysClose,key,code)){Shadowbox.close()}
else{
if(assertKey(options.keysPrev,key,code)){Shadowbox.previous()}
else{
if(assertKey(options.keysNext,key,code)){Shadowbox.next()}
}
}
};
var toggleTroubleElements=function(on){
var vis=(on?"visible":"hidden");
var selects=document.getElementsByTagName("select");
for(i=0,len=selects.length;i<len;++i){
selects[i].style.visibility=vis
}
var objects=document.getElementsByTagName("object");
for(i=0,len=objects.length;i<len;++i){
objects[i].style.visibility=vis
}
var embeds=document.getElementsByTagName("embed");
for(i=0,len=embeds.length;i<len;++i){
embeds[i].style.visibility=vis
}
};
var showLoading=function(){
var loading=SL.get("shadowbox_loading");
loading.style.visibility="visible"
};
var hideLoading=function(callback){
var t=current_gallery[current].type;
var anim=(t=="img"||t=="html");
var loading=SL.get("shadowbox_loading");
if(anim){
fadeOut(loading,0.35,callback)
}
else{
loading.style.visibility="hidden";
callback()
}
};
var resizeOverlay=function(){
var overlay=SL.get("shadowbox_overlay");
SL.setStyle(overlay,{height:"100%",width:"100%"});
SL.setStyle(overlay,"height",SL.getDocumentHeight()+"px");
if(!isSafari3){
SL.setStyle(overlay,"width",SL.getDocumentWidth()+"px")
}
};
var checkOverlayImgNeeded=function(){
if(!(isGecko&&isMac)){return false}
var t;
for(var i=0,len=current_gallery.length;i<len;++i){
t=current_gallery[i].type;
if(t!="img"&&t!="html"){return true}
}
return false
};
var toggleOverlay=function(callback){
var overlay=SL.get("shadowbox_overlay");
if(overlay_img_needed==null){
overlay_img_needed=checkOverlayImgNeeded()
}
if(callback){
resizeOverlay();
if(overlay_img_needed){
SL.setStyle(overlay,{
visibility:"visible",backgroundColor:"transparent",backgroundImage:"url("+options.overlayBgImage+")",backgroundRepeat:"repeat",opacity:1
}
);
callback()
}
else{
SL.setStyle(overlay,{visibility:"visible",backgroundColor:options.overlayColor,backgroundImage:"none"});
fadeIn(overlay,options.overlayOpacity,options.fadeDuration,callback)
}
}
else{
if(overlay_img_needed){
SL.setStyle(overlay,"visibility","hidden")
}
else{
fadeOut(overlay,options.fadeDuration)
}overlay_img_needed=null
}
};
Shadowbox.init=function(opts){
//alert('init');
if(initialized){return }
options=apply(options,opts||{});
appendHTML(document.body,options.skin.main);
RE.img=new RegExp(".("+options.ext.img.join("|")+")s*$","i");
RE.qt=new RegExp(".("+options.ext.qt.join("|")+")s*$","i");
RE.wmp=new RegExp(".("+options.ext.wmp.join("|")+")s*$","i");
RE.qtwmp=new RegExp(".("+options.ext.qtwmp.join("|")+")s*$","i");
RE.iframe=new RegExp(".("+options.ext.iframe.join("|")+")s*$","i");
var id=null;
var resize=function(){
clearInterval(id);
id=null;
resizeOverlay();
resizeContent(optimal_height,optimal_width)
};
SL.addEvent(window,"resize",function(){
if(activated){
if(id){
clearInterval(id);
id=null
}
if(!id){
id=setInterval(resize,50)
}
}
}
);
SL.addEvent(SL.get("shadowbox_overlay"),"click",function(){Shadowbox.close()});
if(absolute_pos){
SL.setStyle(SL.get("shadowbox_container"),"position","absolute");
SL.setStyle("shadowbox_body","zoom",1);
SL.addEvent(SL.get("shadowbox_container"),"click",function(e){
var target=SL.getTarget(e);
if(target.id&&target.id=="shadowbox_container"){Shadowbox.close()}
}
)
}
if(!options.skipSetup){Shadowbox.setup()}
initialized=true
};
Shadowbox.setup=function(links,opts){
//alert('setup');
if(!links){
var links=[];
var a=document.getElementsByTagName("a"),rel;
for(var i=0,len=a.length;i<len;++i){
rel=a[i].getAttribute("rel");
if(rel&&RE.rel.test(rel)){
links[links.length]=a[i]
}
}
}
else{
if(!links.length){links=[links]}
}
var link,key;
for(var i=0,len=links.length;i<len;++i){
link=links[i];
if(typeof link.shadowboxCacheKey=="undefined"){
link.shadowboxCacheKey=cache.length;
SL.addEvent(link,"click",handleClick)
}
cache[link.shadowboxCacheKey]=this.buildCacheObj(link,opts)
}
};
Shadowbox.buildCacheObj=function(link,opts){
//alert('buildCacheObj');
var href=link.href;
var o={
el:link,title:link.getAttribute("title"),href:href,type:getPlayerType(href),options:apply({},opts||{})
};
var opt,l_opts=["height","width","gallery"];
for(var i=0,len=l_opts.length;i<len;++i){
opt=l_opts[i];
if(typeof o.options[opt]!="undefined"){
o[opt]=o.options[opt];
delete o.options[opt]
}
}
var rel=link.getAttribute("rel");
if(rel){
var match=rel.match(RE.gallery);
if(match){o.gallery=escape(match[1])}
var params=rel.split(";");
for(var i=0,len=params.length;i<len;++i){
match=params[i].match(RE.param);
if(match){
if(match[1]=="options"){eval("o.options = apply(o.options,"+match[2]+")")}
else{o[match[1]]=match[2]}
}
}
}
return o
};
Shadowbox.open=function(link){
if(activated){return }
activated=true;
setupGallery(link);
if(current_gallery.length){
openContent(link)
}
else{
throw"Shadowbox unable to open link,run setup() first"
}
};
Shadowbox.change=function(num){
if(!current_gallery){return }
if(!current_gallery[num]){
if(!options.continuous){return }
else{num=(num<0)?(current_gallery.length-1):0}
}
current=num;
toggleDrag(false);
setContent(null);
listenKeyboard(false);
showLoading();
hideBars(loadContent)
};
Shadowbox.next=function(){
return this.change(current+1)
};
Shadowbox.previous=function(){
return this.change(current-1)
};
Shadowbox.close=function(){
if(!activated){return }
listenKeyboard(false);
SL.setStyle(SL.get("shadowbox"),{display:"none",visibility:"hidden"});
if(absolute_pos){
SL.removeEvent(window,"scroll",centerVertically)
}
toggleDrag(false);
setContent(null);
if(preloader){
preloader.onload=function(){};
preloader=null
}
toggleOverlay(false);
toggleTroubleElements(true);
if(options.onClose&&typeof options.onClose=="function"){
var link=current_gallery[current];
if(link){options.onClose(link.el)}
}
activated=false
};
Shadowbox.movieMarkup=function(link){
var h=link.height?parseInt(link.height,10):300;
var w=link.width?parseInt(link.width,10):300;
var autoplay=options.autoplayMovies;
var controls=options.showMovieControls;
if(link.options){
if(link.options.autoplayMovies!=null){
autoplay=link.options.autoplayMovies
}
if(link.options.showMovieControls!=null){
controls=link.options.showMovieControls
}
}
var markup={tag:"object",name:"shadowbox_content"};
switch(link.type){
case"swf":
var dims=getDimensions(h,w,true);
h=dims.height;
w=dims.width;
markup.type="application/x-shockwave-flash";
markup.data=link.href;
markup.children=[{tag:"param",name:"movie",value:link.href}];
break;
case"flv":
autoplay=autoplay?"true":"false";
var showicons="false";
var a=h/w;
if(controls){showicons="true";h+=20}
var dims=getDimensions(h,h/a,true);
h=dims.height;
w=(h-(controls?20:0))/a;
var flashvars=["file="+link.href,"height="+h,"width="+w,"autostart="+autoplay,"displayheight="+(h-(controls?20:0)),"showicons="+showicons,"backcolor=0x000000&amp;frontcolor=0xCCCCCC&amp;lightcolor=0x557722"];
markup.type="application/x-shockwave-flash";
markup.data=options.flvPlayer;
markup.children=[{tag:"param",name:"movie",value:options.flvPlayer},{tag:"param",name:"flashvars",value:flashvars.join("&amp;")},{tag:"param",name:"allowfullscreen",value:"true"}];
break;
case"qt":
autoplay=autoplay?"true":"false";
if(controls){controls="true";h+=16}
else{controls="false"}
markup.children=[{tag:"param",name:"src",value:link.href},{tag:"param",name:"scale",value:"aspect"},{tag:"param",name:"controller",value:controls},{tag:"param",name:"autoplay",value:autoplay}];
if(isIE){
markup.classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
markup.codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"
}
else{markup.type="video/quicktime";markup.data=link.href}
break;
case"wmp":
autoplay=autoplay?1:0;
markup.children=[{tag:"param",name:"autostart",value:autoplay}];
if(isIE){
if(controls){controls="full";h+=70}
else{controls="none"}
markup.classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6";
markup.children[markup.children.length]={tag:"param",name:"url",value:link.href};
markup.children[markup.children.length]={tag:"param",name:"uimode",value:controls}
}
else{
if(controls){controls=1;h+=45}
else{controls=0}
markup.type="video/x-ms-wmv";
markup.data=link.href;
markup.children[markup.children.length]={tag:"param",name:"showcontrols",value:controls}
}
break
}
markup.height=h;
markup.width=w;
return markup
};
Shadowbox.createHTML=function(obj){
var html="<"+obj.tag;
for(var attr in obj){
if(attr=="tag"||attr=="html"||attr=="children"){continue}
if(attr=="cls"){html+=' class="'+obj["cls"]+'"'}
else{html+=" "+attr+'="'+obj[attr]+'"'}
}
if(RE.empty.test(obj.tag)){html+="/>\n"}
else{
html+=">\n";
var cn=obj.children;
if(cn){
for(var i=0,len=cn.length;i<len;++i){
html+=this.createHTML(cn[i])
}
}
if(obj.html){
html+=obj.html
}html+="</"+obj.tag+">\n"
}
return html
};
Shadowbox.getPlugins=function(){return plugins};
Shadowbox.getOptions=function(){return options};
Shadowbox.getCurrent=function(){return current_gallery[current]};
Shadowbox.version=function(){return version}
}
)();
Array.prototype.indexOf=Array.prototype.indexOf||function(C){
for(var B=0,A=this.length;B<A;++B){
if(this[B]==C){return B}
}
return -1
};
String.format=String.format||function(B){
var A=Array.prototype.slice.call(arguments,1);
return B.replace(/\{(\d+)\}/g,function(C,D){return A[D]})
}
window.onload = function(){Shadowbox.init();};
/*  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();
// script.aculo.us scriptaculous.js v1.8.1,Thu Jan 03 22:07:12 -0500 2008
// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us,http://mir.aculo.us)
//
// 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.1',require: function(libraryName) {
// inserting via DOM fails in Safari 2.0,so brute force approach
document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');
},REQUIRED_PROTOTYPE: '1.6.0',load: function() {
function convertVersionString(versionString){
var r = versionString.split('.');
return parseInt(r[0])*100000 + parseInt(r[1])*1000 + parseInt(r[2]);
}
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);
$A(document.getElementsByTagName("script")).findAll( function(s) {
return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))
}).each( function(s) {
var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,'');
var 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();
// script.aculo.us builder.js v1.8.1,Thu Jan 03 22:07:12 -0500 2008
// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us,http://mir.aculo.us)
//
// 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)));
}
});
}
}
// script.aculo.us effects.js v1.8.1,Thu Jan 03 22:07:12 -0500 2008
// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us,http://mir.aculo.us)
// Contributors:
//  Justin Palmer (http://encytemedia.com/)
//  Mark Pilgrim (http://diveintomark.org/)
//  Martin Bialasinki
//
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details,see the script.aculo.us web site: http://script.aculo.us/
// converts rgb() and #xxx to #xxxxxx format,// returns self (or first argument) if not convertable
String.prototype.parseColor = function() {
var color = '#';
if (this.slice(0,4) == 'rgb(') {
var cols = this.slice(4,this.length-1).split(',');
var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);
} else {
if (this.slice(0,1) == '#') {
if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();
if (this.length==7) color = this.toLowerCase();
}
}
return (color.length==7 ? color : (arguments[0] || this));
};
/*--------------------------------------------------------------------------*/
Element.collectTextNodes = function(element) {
return $A($(element).childNodes).collect( function(node) {
return (node.nodeType==3 ? node.nodeValue :
(node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
}).flatten().join('');
};
Element.collectTextNodesIgnoreClass = function(element,className) {
return $A($(element).childNodes).collect( function(node) {
return (node.nodeType==3 ? node.nodeValue :
((node.hasChildNodes() && !Element.hasClassName(node,className)) ?
Element.collectTextNodesIgnoreClass(node,className) : ''));
}).flatten().join('');
};
Element.setContentZoom = function(element,percent) {
element = $(element);
element.setStyle({fontSize: (percent/100) + 'em'});
if (Prototype.Browser.WebKit) window.scrollBy(0,0);
return element;
};
Element.getInlineOpacity = function(element){
return $(element).style.opacity || '';
};
Element.forceRerendering = function(element) {
try {
element = $(element);
var n = document.createTextNode(' ');
element.appendChild(n);
element.removeChild(n);
} catch(e) { }
};
/*--------------------------------------------------------------------------*/
var Effect = {
_elementDoesNotExistError: {
name: 'ElementDoesNotExistError',message: 'The specified DOM element does not exist,but is required for this effect to operate'
},Transitions: {
linear: Prototype.K,sinoidal: function(pos) {
return (-Math.cos(pos*Math.PI)/2) + 0.5;
},reverse: function(pos) {
return 1-pos;
},flicker: function(pos) {
var pos = ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;
return pos > 1 ? 1 : pos;
},wobble: function(pos) {
return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
},pulse: function(pos,pulses) {
pulses = pulses || 5;
return (
((pos % (1/pulses)) * pulses).round() == 0 ?
((pos * pulses * 2) - (pos * pulses * 2).floor()) :
1 - ((pos * pulses * 2) - (pos * pulses * 2).floor())
);
},spring: function(pos) {
return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));
},none: function(pos) {
return 0;
},full: function(pos) {
return 1;
}
},DefaultOptions: {
duration:   1.0,// seconds
fps:        100,// 100= assume 66fps max.
sync:       false,// true for combining
from:       0.0,to:         1.0,delay:      0.0,queue:      'parallel'
},tagifyText: function(element) {
var tagifyStyle = 'position:relative';
if (Prototype.Browser.IE) tagifyStyle += ';zoom:1';
element = $(element);
$A(element.childNodes).each( function(child) {
if (child.nodeType==3) {
child.nodeValue.toArray().each( function(character) {
element.insertBefore(
new Element('span',{style: tagifyStyle}).update(
character == ' ' ? String.fromCharCode(160) : character),child);
});
Element.remove(child);
}
});
},multiple: function(element,effect) {
var elements;
if (((typeof element == 'object') ||
Object.isFunction(element)) &&
(element.length))
elements = element;
else
elements = $(element).childNodes;
var options = Object.extend({
speed: 0.1,delay: 0.0
},arguments[2] || { });
var masterDelay = options.delay;
$A(elements).each( function(element,index) {
new effect(element,Object.extend(options,{ delay: index * options.speed + masterDelay }));
});
},PAIRS: {
'slide':  ['SlideDown','SlideUp'],'blind':  ['BlindDown','BlindUp'],'appear': ['Appear','Fade']
},toggle: function(element,effect) {
element = $(element);
effect = (effect || 'appear').toLowerCase();
var options = Object.extend({
queue: { position:'end',scope:(element.id || 'global'),limit: 1 }
},arguments[2] || { });
Effect[element.visible() ?
Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element,options);
}
};
Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;
/* ------------- core effects ------------- */
Effect.ScopedQueue = Class.create(Enumerable,{
initialize: function() {
this.effects  = [];
this.interval = null;
},_each: function(iterator) {
this.effects._each(iterator);
},add: function(effect) {
var timestamp = new Date().getTime();
var position = Object.isString(effect.options.queue) ?
effect.options.queue : effect.options.queue.position;
switch(position) {
case 'front':
// move unstarted effects after this effect
this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
e.startOn  += effect.finishOn;
e.finishOn += effect.finishOn;
});
break;
case 'with-last':
timestamp = this.effects.pluck('startOn').max() || timestamp;
break;
case 'end':
// start effect after last queued effect has finished
timestamp = this.effects.pluck('finishOn').max() || timestamp;
break;
}
effect.startOn  += timestamp;
effect.finishOn += timestamp;
if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
this.effects.push(effect);
if (!this.interval)
this.interval = setInterval(this.loop.bind(this),15);
},remove: function(effect) {
this.effects = this.effects.reject(function(e) { return e==effect });
if (this.effects.length == 0) {
clearInterval(this.interval);
this.interval = null;
}
},loop: function() {
var timePos = new Date().getTime();
for(var i=0,len=this.effects.length;i<len;i++)
this.effects[i] && this.effects[i].loop(timePos);
}
});
Effect.Queues = {
instances: $H(),get: function(queueName) {
if (!Object.isString(queueName)) return queueName;
return this.instances.get(queueName) ||
this.instances.set(queueName,new Effect.ScopedQueue());
}
};
Effect.Queue = Effect.Queues.get('global');
Effect.Base = Class.create({
position: null,start: function(options) {
function codeForEvent(options,eventName){
return (
(options[eventName+'Internal'] ? 'this.options.'+eventName+'Internal(this);' : '') +
(options[eventName] ? 'this.options.'+eventName+'(this);' : '')
);
}
if (options && options.transition === false) options.transition = Effect.Transitions.linear;
this.options      = Object.extend(Object.extend({ },Effect.DefaultOptions),options || { });
this.currentFrame = 0;
this.state        = 'idle';
this.startOn      = this.options.delay*1000;
this.finishOn     = this.startOn+(this.options.duration*1000);
this.fromToDelta  = this.options.to-this.options.from;
this.totalTime    = this.finishOn-this.startOn;
this.totalFrames  = this.options.fps*this.options.duration;
eval('this.render = function(pos){ '+
'if (this.state=="idle"){this.state="running";'+
codeForEvent(this.options,'beforeSetup')+
(this.setup ? 'this.setup();':'')+
codeForEvent(this.options,'afterSetup')+
'};if (this.state=="running"){'+
'pos=this.options.transition(pos)*'+this.fromToDelta+'+'+this.options.from+';'+
'this.position=pos;'+
codeForEvent(this.options,'beforeUpdate')+
(this.update ? 'this.update(pos);':'')+
codeForEvent(this.options,'afterUpdate')+
'}}');
this.event('beforeStart');
if (!this.options.sync)
Effect.Queues.get(Object.isString(this.options.queue) ?
'global' : this.options.queue.scope).add(this);
},loop: function(timePos) {
if (timePos >= this.startOn) {
if (timePos >= this.finishOn) {
this.render(1.0);
this.cancel();
this.event('beforeFinish');
if (this.finish) this.finish();
this.event('afterFinish');
return;
}
var pos   = (timePos - this.startOn) / this.totalTime,frame = (pos * this.totalFrames).round();
if (frame > this.currentFrame) {
this.render(pos);
this.currentFrame = frame;
}
}
},cancel: function() {
if (!this.options.sync)
Effect.Queues.get(Object.isString(this.options.queue) ?
'global' : this.options.queue.scope).remove(this);
this.state = 'finished';
},event: function(eventName) {
if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
if (this.options[eventName]) this.options[eventName](this);
},inspect: function() {
var data = $H();
for(property in this)
if (!Object.isFunction(this[property])) data.set(property,this[property]);
return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>';
}
});
Effect.Parallel = Class.create(Effect.Base,{
initialize: function(effects) {
this.effects = effects || [];
this.start(arguments[1]);
},update: function(position) {
this.effects.invoke('render',position);
},finish: function(position) {
this.effects.each( function(effect) {
effect.render(1.0);
effect.cancel();
effect.event('beforeFinish');
if (effect.finish) effect.finish(position);
effect.event('afterFinish');
});
}
});
Effect.Tween = Class.create(Effect.Base,{
initialize: function(object,from,to) {
object = Object.isString(object) ? $(object) : object;
var args = $A(arguments),method = args.last(),options = args.length == 5 ? args[3] : null;
this.method = Object.isFunction(method) ? method.bind(object) :
Object.isFunction(object[method]) ? object[method].bind(object) :
function(value) { object[method] = value };
this.start(Object.extend({ from: from,to: to },options || { }));
},update: function(position) {
this.method(position);
}
});
Effect.Event = Class.create(Effect.Base,{
initialize: function() {
this.start(Object.extend({ duration: 0 },arguments[0] || { }));
},update: Prototype.emptyFunction
});
Effect.Opacity = Class.create(Effect.Base,{
initialize: function(element) {
this.element = $(element);
if (!this.element) throw(Effect._elementDoesNotExistError);
// make this work on IE on elements without 'layout'
if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom: 1});
var options = Object.extend({
from: this.element.getOpacity() || 0.0,to:   1.0
},arguments[1] || { });
this.start(options);
},update: function(position) {
this.element.setOpacity(position);
}
});
Effect.Move = Class.create(Effect.Base,{
initialize: function(element) {
this.element = $(element);
if (!this.element) throw(Effect._elementDoesNotExistError);
var options = Object.extend({
x:    0,y:    0,mode: 'relative'
},arguments[1] || { });
this.start(options);
},setup: function() {
this.element.makePositioned();
this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
this.originalTop  = parseFloat(this.element.getStyle('top')  || '0');
if (this.options.mode == 'absolute') {
this.options.x = this.options.x - this.originalLeft;
this.options.y = this.options.y - this.originalTop;
}
},update: function(position) {
this.element.setStyle({
left: (this.options.x  * position + this.originalLeft).round() + 'px',top:  (this.options.y  * position + this.originalTop).round()  + 'px'
});
}
});
// for backwards compatibility
Effect.MoveBy = function(element,toTop,toLeft) {
return new Effect.Move(element,Object.extend({ x: toLeft,y: toTop },arguments[3] || { }));
};
Effect.Scale = Class.create(Effect.Base,{
initialize: function(element,percent) {
this.element = $(element);
if (!this.element) throw(Effect._elementDoesNotExistError);
var options = Object.extend({
scaleX: true,scaleY: true,scaleContent: true,scaleFromCenter: false,scaleMode: 'box',// 'box' or 'contents' or { } with provided values
scaleFrom: 100.0,scaleTo:   percent
},arguments[2] || { });
this.start(options);
},setup: function() {
this.restoreAfterFinish = this.options.restoreAfterFinish || false;
this.elementPositioning = this.element.getStyle('position');
this.originalStyle = { };
['top','left','width','height','fontSize'].each( function(k) {
this.originalStyle[k] = this.element.style[k];
}.bind(this));
this.originalTop  = this.element.offsetTop;
this.originalLeft = this.element.offsetLeft;
var fontSize = this.element.getStyle('font-size') || '100%';
['em','px','%','pt'].each( function(fontSizeType) {
if (fontSize.indexOf(fontSizeType)>0) {
this.fontSize     = parseFloat(fontSize);
this.fontSizeType = fontSizeType;
}
}.bind(this));
this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
this.dims = null;
if (this.options.scaleMode=='box')
this.dims = [this.element.offsetHeight,this.element.offsetWidth];
if (/^content/.test(this.options.scaleMode))
this.dims = [this.element.scrollHeight,this.element.scrollWidth];
if (!this.dims)
this.dims = [this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];
},update: function(position) {
var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
if (this.options.scaleContent && this.fontSize)
this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
this.setDimensions(this.dims[0] * currentScale,this.dims[1] * currentScale);
},finish: function(position) {
if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
},setDimensions: function(height,width) {
var d = { };
if (this.options.scaleX) d.width = width.round() + 'px';
if (this.options.scaleY) d.height = height.round() + 'px';
if (this.options.scaleFromCenter) {
var topd  = (height - this.dims[0])/2;
var leftd = (width  - this.dims[1])/2;
if (this.elementPositioning == 'absolute') {
if (this.options.scaleY) d.top = this.originalTop-topd + 'px';
if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
} else {
if (this.options.scaleY) d.top = -topd + 'px';
if (this.options.scaleX) d.left = -leftd + 'px';
}
}
this.element.setStyle(d);
}
});
Effect.Highlight = Class.create(Effect.Base,{
initialize: function(element) {
this.element = $(element);
if (!this.element) throw(Effect._elementDoesNotExistError);
var options = Object.extend({ startcolor: '#ffff99' },arguments[1] || { });
this.start(options);
},setup: function() {
// Prevent executing on elements not in the layout flow
if (this.element.getStyle('display')=='none') { this.cancel(); return; }
// Disable background image during the effect
this.oldStyle = { };
if (!this.options.keepBackgroundImage) {
this.oldStyle.backgroundImage = this.element.getStyle('background-image');
this.element.setStyle({backgroundImage: 'none'});
}
if (!this.options.endcolor)
this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
if (!this.options.restorecolor)
this.options.restorecolor = this.element.getStyle('background-color');
// init color calculations
this._base  = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));
},update: function(position) {
this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) });
},finish: function() {
this.element.setStyle(Object.extend(this.oldStyle,{
backgroundColor: this.options.restorecolor
}));
}
});
Effect.ScrollTo = function(element) {
var options = arguments[1] || { },scrollOffsets = document.viewport.getScrollOffsets(),elementOffsets = $(element).cumulativeOffset(),max = (window.height || document.body.scrollHeight) - document.viewport.getHeight();
if (options.offset) elementOffsets[1] += options.offset;
return new Effect.Tween(null,scrollOffsets.top,elementOffsets[1] > max ? max : elementOffsets[1],options,function(p){ scrollTo(scrollOffsets.left,p.round()) }
);
};
/* ------------- combination effects ------------- */
Effect.Fade = function(element) {
element = $(element);
var oldOpacity = element.getInlineOpacity();
var options = Object.extend({
from: element.getOpacity() || 1.0,to:   0.0,afterFinishInternal: function(effect) {
if (effect.options.to!=0) return;
effect.element.hide().setStyle({opacity: oldOpacity});
}
},arguments[1] || { });
return new Effect.Opacity(element,options);
};
Effect.Appear = function(element) {
element = $(element);
var options = Object.extend({
from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),to:   1.0,// force Safari to render floated elements properly
afterFinishInternal: function(effect) {
effect.element.forceRerendering();
},beforeSetup: function(effect) {
effect.element.setOpacity(effect.options.from).show();
}},arguments[1] || { });
return new Effect.Opacity(element,options);
};
Effect.Puff = function(element) {
element = $(element);
var oldStyle = {
opacity: element.getInlineOpacity(),position: element.getStyle('position'),top:  element.style.top,left: element.style.left,width: element.style.width,height: element.style.height
};
return new Effect.Parallel(
[ new Effect.Scale(element,200,{ sync: true,scaleFromCenter: true,scaleContent: true,restoreAfterFinish: true }),new Effect.Opacity(element,{ sync: true,to: 0.0 } ) ],Object.extend({ duration: 1.0,beforeSetupInternal: function(effect) {
Position.absolutize(effect.effects[0].element)
},afterFinishInternal: function(effect) {
effect.effects[0].element.hide().setStyle(oldStyle); }
},arguments[1] || { })
);
};
Effect.BlindUp = function(element) {
element = $(element);
element.makeClipping();
return new Effect.Scale(element,0,Object.extend({ scaleContent: false,scaleX: false,restoreAfterFinish: true,afterFinishInternal: function(effect) {
effect.element.hide().undoClipping();
}
},arguments[1] || { })
);
};
Effect.BlindDown = function(element) {
element = $(element);
var elementDimensions = element.getDimensions();
return new Effect.Scale(element,100,Object.extend({
scaleContent: false,scaleX: false,scaleFrom: 0,scaleMode: {originalHeight: elementDimensions.height,originalWidth: elementDimensions.width},restoreAfterFinish: true,afterSetup: function(effect) {
effect.element.makeClipping().setStyle({height: '0px'}).show();
},afterFinishInternal: function(effect) {
effect.element.undoClipping();
}
},arguments[1] || { }));
};
Effect.SwitchOff = function(element) {
element = $(element);
var oldOpacity = element.getInlineOpacity();
return new Effect.Appear(element,Object.extend({
duration: 0.4,from: 0,transition: Effect.Transitions.flicker,afterFinishInternal: function(effect) {
new Effect.Scale(effect.element,1,{
duration: 0.3,scaleFromCenter: true,scaleX: false,scaleContent: false,restoreAfterFinish: true,beforeSetup: function(effect) {
effect.element.makePositioned().makeClipping();
},afterFinishInternal: function(effect) {
effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
}
})
}
},arguments[1] || { }));
};
Effect.DropOut = function(element) {
element = $(element);
var oldStyle = {
top: element.getStyle('top'),left: element.getStyle('left'),opacity: element.getInlineOpacity() };
return new Effect.Parallel(
[ new Effect.Move(element,{x: 0,y: 100,sync: true }),new Effect.Opacity(element,{ sync: true,to: 0.0 }) ],Object.extend(
{ duration: 0.5,beforeSetup: function(effect) {
effect.effects[0].element.makePositioned();
},afterFinishInternal: function(effect) {
effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
}
},arguments[1] || { }));
};
Effect.Shake = function(element) {
element = $(element);
var options = Object.extend({
distance: 20,duration: 0.5
},arguments[1] || {});
var distance = parseFloat(options.distance);
var split = parseFloat(options.duration) / 10.0;
var oldStyle = {
top: element.getStyle('top'),left: element.getStyle('left') };
return new Effect.Move(element,{ x:  distance,y: 0,duration: split,afterFinishInternal: function(effect) {
new Effect.Move(effect.element,{ x: -distance*2,y: 0,duration: split*2,afterFinishInternal: function(effect) {
new Effect.Move(effect.element,{ x:  distance*2,y: 0,duration: split*2,afterFinishInternal: function(effect) {
new Effect.Move(effect.element,{ x: -distance*2,y: 0,duration: split*2,afterFinishInternal: function(effect) {
new Effect.Move(effect.element,{ x:  distance*2,y: 0,duration: split*2,afterFinishInternal: function(effect) {
new Effect.Move(effect.element,{ x: -distance,y: 0,duration: split,afterFinishInternal: function(effect) {
effect.element.undoPositioned().setStyle(oldStyle);
}}) }}) }}) }}) }}) }});
};
Effect.SlideDown = function(element) {
element = $(element).cleanWhitespace();
// SlideDown need to have the content of the element wrapped in a container element with fixed height!
var oldInnerBottom = element.down().getStyle('bottom');
var elementDimensions = element.getDimensions();
return new Effect.Scale(element,100,Object.extend({
scaleContent: false,scaleX: false,scaleFrom: window.opera ? 0 : 1,scaleMode: {originalHeight: elementDimensions.height,originalWidth: elementDimensions.width},restoreAfterFinish: true,afterSetup: function(effect) {
effect.element.makePositioned();
effect.element.down().makePositioned();
if (window.opera) effect.element.setStyle({top: ''});
effect.element.makeClipping().setStyle({height: '0px'}).show();
},afterUpdateInternal: function(effect) {
effect.element.down().setStyle({bottom:
(effect.dims[0] - effect.element.clientHeight) + 'px' });
},afterFinishInternal: function(effect) {
effect.element.undoClipping().undoPositioned();
effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }
},arguments[1] || { })
);
};
Effect.SlideUp = function(element) {
element = $(element).cleanWhitespace();
var oldInnerBottom = element.down().getStyle('bottom');
var elementDimensions = element.getDimensions();
return new Effect.Scale(element,window.opera ? 0 : 1,Object.extend({ scaleContent: false,scaleX: false,scaleMode: 'box',scaleFrom: 100,scaleMode: {originalHeight: elementDimensions.height,originalWidth: elementDimensions.width},restoreAfterFinish: true,afterSetup: function(effect) {
effect.element.makePositioned();
effect.element.down().makePositioned();
if (window.opera) effect.element.setStyle({top: ''});
effect.element.makeClipping().show();
},afterUpdateInternal: function(effect) {
effect.element.down().setStyle({bottom:
(effect.dims[0] - effect.element.clientHeight) + 'px' });
},afterFinishInternal: function(effect) {
effect.element.hide().undoClipping().undoPositioned();
effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom});
}
},arguments[1] || { })
);
};
// Bug in opera makes the TD containing this element expand for a instance after finish
Effect.Squish = function(element) {
return new Effect.Scale(element,window.opera ? 1 : 0,{
restoreAfterFinish: true,beforeSetup: function(effect) {
effect.element.makeClipping();
},afterFinishInternal: function(effect) {
effect.element.hide().undoClipping();
}
});
};
Effect.Grow = function(element) {
element = $(element);
var options = Object.extend({
direction: 'center',moveTransition: Effect.Transitions.sinoidal,scaleTransition: Effect.Transitions.sinoidal,opacityTransition: Effect.Transitions.full
},arguments[1] || { });
var oldStyle = {
top: element.style.top,left: element.style.left,height: element.style.height,width: element.style.width,opacity: element.getInlineOpacity() };
var dims = element.getDimensions();
var initialMoveX,initialMoveY;
var moveX,moveY;
switch (options.direction) {
case 'top-left':
initialMoveX = initialMoveY = moveX = moveY = 0;
break;
case 'top-right':
initialMoveX = dims.width;
initialMoveY = moveY = 0;
moveX = -dims.width;
break;
case 'bottom-left':
initialMoveX = moveX = 0;
initialMoveY = dims.height;
moveY = -dims.height;
break;
case 'bottom-right':
initialMoveX = dims.width;
initialMoveY = dims.height;
moveX = -dims.width;
moveY = -dims.height;
break;
case 'center':
initialMoveX = dims.width / 2;
initialMoveY = dims.height / 2;
moveX = -dims.width / 2;
moveY = -dims.height / 2;
break;
}
return new Effect.Move(element,{
x: initialMoveX,y: initialMoveY,duration: 0.01,beforeSetup: function(effect) {
effect.element.hide().makeClipping().makePositioned();
},afterFinishInternal: function(effect) {
new Effect.Parallel(
[ new Effect.Opacity(effect.element,{ sync: true,to: 1.0,from: 0.0,transition: options.opacityTransition }),new Effect.Move(effect.element,{ x: moveX,y: moveY,sync: true,transition: options.moveTransition }),new Effect.Scale(effect.element,100,{
scaleMode: { originalHeight: dims.height,originalWidth: dims.width },sync: true,scaleFrom: window.opera ? 1 : 0,transition: options.scaleTransition,restoreAfterFinish: true})
],Object.extend({
beforeSetup: function(effect) {
effect.effects[0].element.setStyle({height: '0px'}).show();
},afterFinishInternal: function(effect) {
effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);
}
},options)
)
}
});
};
Effect.Shrink = function(element) {
element = $(element);
var options = Object.extend({
direction: 'center',moveTransition: Effect.Transitions.sinoidal,scaleTransition: Effect.Transitions.sinoidal,opacityTransition: Effect.Transitions.none
},arguments[1] || { });
var oldStyle = {
top: element.style.top,left: element.style.left,height: element.style.height,width: element.style.width,opacity: element.getInlineOpacity() };
var dims = element.getDimensions();
var moveX,moveY;
switch (options.direction) {
case 'top-left':
moveX = moveY = 0;
break;
case 'top-right':
moveX = dims.width;
moveY = 0;
break;
case 'bottom-left':
moveX = 0;
moveY = dims.height;
break;
case 'bottom-right':
moveX = dims.width;
moveY = dims.height;
break;
case 'center':
moveX = dims.width / 2;
moveY = dims.height / 2;
break;
}
return new Effect.Parallel(
[ new Effect.Opacity(element,{ sync: true,to: 0.0,from: 1.0,transition: options.opacityTransition }),new Effect.Scale(element,window.opera ? 1 : 0,{ sync: true,transition: options.scaleTransition,restoreAfterFinish: true}),new Effect.Move(element,{ x: moveX,y: moveY,sync: true,transition: options.moveTransition })
],Object.extend({
beforeStartInternal: function(effect) {
effect.effects[0].element.makePositioned().makeClipping();
},afterFinishInternal: function(effect) {
effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
},options)
);
};
Effect.Pulsate = function(element) {
element = $(element);
var options    = arguments[1] || { };
var oldOpacity = element.getInlineOpacity();
var transition = options.transition || Effect.Transitions.sinoidal;
var reverser   = function(pos){ return transition(1-Effect.Transitions.pulse(pos,options.pulses)) };
reverser.bind(transition);
return new Effect.Opacity(element,Object.extend(Object.extend({  duration: 2.0,from: 0,afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
},options),{transition: reverser}));
};
Effect.Fold = function(element) {
element = $(element);
var oldStyle = {
top: element.style.top,left: element.style.left,width: element.style.width,height: element.style.height };
element.makeClipping();
return new Effect.Scale(element,5,Object.extend({
scaleContent: false,scaleX: false,afterFinishInternal: function(effect) {
new Effect.Scale(element,1,{
scaleContent: false,scaleY: false,afterFinishInternal: function(effect) {
effect.element.hide().undoClipping().setStyle(oldStyle);
} });
}},arguments[1] || { }));
};
Effect.Morph = Class.create(Effect.Base,{
initialize: function(element) {
this.element = $(element);
if (!this.element) throw(Effect._elementDoesNotExistError);
var options = Object.extend({
style: { }
},arguments[1] || { });
if (!Object.isString(options.style)) this.style = $H(options.style);
else {
if (options.style.include(':'))
this.style = options.style.parseStyle();
else {
this.element.addClassName(options.style);
this.style = $H(this.element.getStyles());
this.element.removeClassName(options.style);
var css = this.element.getStyles();
this.style = this.style.reject(function(style) {
return style.value == css[style.key];
});
options.afterFinishInternal = function(effect) {
effect.element.addClassName(effect.options.style);
effect.transforms.each(function(transform) {
effect.element.style[transform.style] = '';
});
}
}
}
this.start(options);
},setup: function(){
function parseColor(color){
if (!color || ['rgba(0,0,0,0)','transparent'].include(color)) color = '#ffffff';
color = color.parseColor();
return $R(0,2).map(function(i){
return parseInt( color.slice(i*2+1,i*2+3),16 )
});
}
this.transforms = this.style.map(function(pair){
var property = pair[0],value = pair[1],unit = null;
if (value.parseColor('#zzzzzz') != '#zzzzzz') {
value = value.parseColor();
unit  = 'color';
} else if (property == 'opacity') {
value = parseFloat(value);
if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom: 1});
} else if (Element.CSS_LENGTH.test(value)) {
var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/);
value = parseFloat(components[1]);
unit = (components.length == 3) ? components[2] : null;
}
var originalValue = this.element.getStyle(property);
return {
style: property.camelize(),originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0),targetValue: unit=='color' ? parseColor(value) : value,unit: unit
};
}.bind(this)).reject(function(transform){
return (
(transform.originalValue == transform.targetValue) ||
(
transform.unit != 'color' &&
(isNaN(transform.originalValue) || isNaN(transform.targetValue))
)
)
});
},update: function(position) {
var style = { },transform,i = this.transforms.length;
while(i--)
style[(transform = this.transforms[i]).style] =
transform.unit=='color' ? '#'+
(Math.round(transform.originalValue[0]+
(transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() +
(Math.round(transform.originalValue[1]+
(transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() +
(Math.round(transform.originalValue[2]+
(transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() :
(transform.originalValue +
(transform.targetValue - transform.originalValue) * position).toFixed(3) +
(transform.unit === null ? '' : transform.unit);
this.element.setStyle(style,true);
}
});
Effect.Transform = Class.create({
initialize: function(tracks){
this.tracks  = [];
this.options = arguments[1] || { };
this.addTracks(tracks);
},addTracks: function(tracks){
tracks.each(function(track){
track = $H(track);
var data = track.values().first();
this.tracks.push($H({
ids:     track.keys().first(),effect:  Effect.Morph,options: { style: data }
}));
}.bind(this));
return this;
},play: function(){
return new Effect.Parallel(
this.tracks.map(function(track){
var ids = track.get('ids'),effect = track.get('effect'),options = track.get('options');
var elements = [$(ids) || $$(ids)].flatten();
return elements.map(function(e){ return new effect(e,Object.extend({ sync:true },options)) });
}).flatten(),this.options
);
}
});
Element.CSS_PROPERTIES = $w(
'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' +
'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
'fontSize fontWeight height left letterSpacing lineHeight ' +
'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
'right textIndent top width wordSpacing zIndex');
Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
String.__parseStyleElement = document.createElement('div');
String.prototype.parseStyle = function(){
var style,styleRules = $H();
if (Prototype.Browser.WebKit)
style = new Element('div',{style:this}).style;
else {
String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>';
style = String.__parseStyleElement.childNodes[0].style;
}
Element.CSS_PROPERTIES.each(function(property){
if (style[property]) styleRules.set(property,style[property]);
});
if (Prototype.Browser.IE && this.include('opacity'))
styleRules.set('opacity',this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);
return styleRules;
};
if (document.defaultView && document.defaultView.getComputedStyle) {
Element.getStyles = function(element) {
var css = document.defaultView.getComputedStyle($(element),null);
return Element.CSS_PROPERTIES.inject({ },function(styles,property) {
styles[property] = css[property];
return styles;
});
};
} else {
Element.getStyles = function(element) {
element = $(element);
var css = element.currentStyle,styles;
styles = Element.CSS_PROPERTIES.inject({ },function(results,property) {
results[property] = css[property];
return results;
});
if (!styles.opacity) styles.opacity = element.getOpacity();
return styles;
};
};
Effect.Methods = {
morph: function(element,style) {
element = $(element);
new Effect.Morph(element,Object.extend({ style: style },arguments[2] || { }));
return element;
},visualEffect: function(element,effect,options) {
element = $(element)
var s = effect.dasherize().camelize(),klass = s.charAt(0).toUpperCase() + s.substring(1);
new Effect[klass](element,options);
return element;
},highlight: function(element,options) {
element = $(element);
new Effect.Highlight(element,options);
return element;
}
};
$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+
'pulsate shake puff squish switchOff dropOut').each(
function(effect) {
Effect.Methods[effect] = function(element,options){
element = $(element);
Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element,options);
return element;
}
}
);
$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(
function(f) { Effect.Methods[f] = Element[f]; }
);
Element.addMethods(Effect.Methods);
// script.aculo.us ERWEITERUNG FÜR REFLECTIONS (DP)
// ------------------------------------------------
// ------------------------------------------------
var Reflector = {
reflect: function(element) {
element = $(element);
if (element) {
var _amount = 1/3;
var _opacity= 1/3;
var p = element.parentNode,n = element.nextSibling;
var d = 1.0/(element.height*_amount);
(element.height*_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)*_opacity);
});
}
}
}
//dragdrop.js//
// 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 = Position.cumulativeOffset(this.element);
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.nbmodus) {
this._clone = this.element.cloneNode(true);
this._originallyAbsolute = (this.element.getStyle('position') == 'absolute');
if (!this._originallyAbsolute)
Position.absolutize(this.element);
$(this.options.nbmodus).appendChild(this._clone);
//      this.element.parentNode.removeChild(this.element);
var orgelem = this.element;
this.element = this._clone;
this._clone = orgelem;
}
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;
}
if(this.options.nbmodus) {
var orgelem = this.element;
this.element = this._clone;
this._clone = orgelem;
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 = Position.cumulativeOffset(this.element);
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.id] = 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 = Position.cumulativeOffset(dropon);
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')];
};
//controls.js//
// 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));
}
});
//// DragDropExtra Scriptaculous Enhancement,version 0.5
//// (c) 2007-2008 Christopher Williams,Iterative Designs
////
//// v0.5 release
//// - Fixed bug where 2nd drag on an element in IE would result in funny placement of the
//// element. [shammond42]
//// v0.4 release
//// - Fixed issue with dragging and dropping in IE7 due to an exception being thrown and not properly reseting in FinishDrag.
//// v0.3 release
//// - Fixed bug found by Phillip Sauerbeck psauerbeck@gmail. Tests added based on Phillip's efforts.
//// v0.2 release
//// - Minor bug fix for the releasing of objects after they have been dropped,prevents memory leak.
//// v0.1 release
//// - initial release for the super ghosting capability
//// - Drags from one scrolling list to the other (overflow:auto)
//// - Retains the original object so that it can remain present despite being dragged
////
//// dragdropextra.js is freely distributable under the terms of an MIT-style license.
//// For details,see the Iterative Designs web site: http://www.iterativedesigns.com/
//// Parts of this code have been taken from the original dragdrop.js library which is
//// copyrighted by (c) 2005-2007 Thomas Fuchs (http://script.aculo.us,//// http://mir.aculo.us) and (c) 2005-2007 Sammi Williams
//// (http://www.oriontransfer.co.nz,sammi@oriontransfer.co.nz) and available under
//// a MIT-style license.
//
//Draggable.prototype.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.element._originallyAbsolute = (this.element.getStyle('position') == 'absolute');
//    if (!this.element._originallyAbsolute)
//      Position.absolutize(this.element);
//    this.element.parentNode.insertBefore(this._clone,this.element);
//  }
//
//if(this.options.superghosting) {
//Position.prepare();
//var pointer = [Event.pointerX(event),Event.pointerY(event)];
//body = document.getElementsByTagName("body")[0];
//me = this.element;
//this._clone = me.cloneNode(true);
//if (Prototype.Browser.IE) {
//  // Clear event handing from the clone
//// Solves the second drag issue in IE
//this._clone.clearAttributes();
//this._clone.mergeAttributes(me.cloneNode(false));
//}
//me.parentNode.insertBefore(this._clone,me);
//me.id = "clone_"+me.id;
//me.hide();
//
//Position.absolutize(me);
//me.parentNode.removeChild(me);
//body.appendChild(me);
////Retain height and width of object only if it has been nulled out. -v0.3 Fix
//if (me.style.width == "0px" || me.style.height == "0px") {
//me.style.width=Element.getWidth(this._clone)+"px";
//me.style.height=Element.getHeight(this._clone)+"px";
//}
//
////overloading in order to reduce repeated code weight.
//this.originalScrollTop = (Element.getHeight(this._clone)/2);
//
//this.draw(pointer);
//me.show();
//}
//
//  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);
//}
//
//
//
//
//Draggable.prototype.draw = function(point) {
//var pos = Position.cumulativeOffset(this.element);
//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))
//          }
//        }}
//
//   if (this.options.superghosting) {
//p[1] = point[1] - this.originalScrollTop;
//}
//
//
//
//    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
//}
//
//Draggable.prototype.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 = Position.cumulativeOffset(this.element);
//    this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) });
//
//    Draggables.activate(this);
//    Event.stop(event);
//  }
//}
//
//Droppables.isAffected = function(point,element,drop) {
//Position.prepare();
//positioned_within = Position.withinIncludingScrolloffsets(drop.element,point[0],point[1])
//return (
//      (drop.element!=element) &&
//      ((!drop._containers) ||
//        this.isContained(element,drop)) &&
//      ((!drop.accept) ||
//        (Element.classNames(element).detect(
//          function(v) { return drop.accept.include(v) } ) )) && positioned_within );
//
//
//}
//
//Draggable.prototype.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.element._originallyAbsolute)
//      Position.relativize(this.element);
//    delete this.element._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);
//
//
//if(this.options.superghosting) {
//body = document.getElementsByTagName("body")[0];
//Element.remove(this.element);
//new Draggable(this._clone,this.options);
//}
//
//
//  Draggables.deactivate(this);
//  Droppables.reset();
//}
// Copyright (c) 2005-2008 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 = Position.cumulativeOffset(this.track);
this.event = event;
this.setValue(this.translateToValue(
(this.isVertical() ? pointer[1]-offsets[1] : pointer[0]-offsets[0])-(this.handleLength/2)
));
var offsets = Position.cumulativeOffset(this.activeHandle);
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 = Position.cumulativeOffset(this.activeHandle);
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 = Position.cumulativeOffset(this.track);
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;
}
});
//------------------------------------------------------------------------------------------
//Netbiscuits-Functions
//------------------------------------------------------------------------------------------
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);
}
// ---------------------------------------------------------------------------
// 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/img/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 zunächst entfernt
while (ParentContainer.firstChild)
{
ParentContainer.removeChild(ParentContainer.firstChild);
}
//Bestimmt die Anzahl der Anker,welche generiert werden müssen,um die Seiten in der
//Navigation darzustellen
if (TotalPages < 6)
{
Counter = TotalPages;
}
else
{
Counter = 5;
}
//Logik um die aktuell gewählte Seite mittig zu halten und sie beim Anfang und Ende
//der Tabelle entsprechend am Rand zu platzieren.
//Auch verantwortlich für 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,//füllt sie mit den entsprechenden Werten und markiert die aktuell ausgewählte Seite und
//fügt 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 hinzugefügt
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 mögliche Deaktivieren/Aktivieren der Steuerelemente berücksichtigt
//werden. Daher werden hier für 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 Veränderung der Navigationsdarstellung ausserhalb
//des Blättern Controls,so prüft diese Funktion den momentanen
//Zustand des Blättern 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;
}
//Fügt dem Container einen farblichen Vordergrund und ein Ladeicon hinzu,um bei einem Ajax Request
//die Übergangszeit 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+"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 == '336') {
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 = (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 Ändern 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 zurück
function ovAnzTabs(boxID) {
var parentDiv = $(boxID+'_navlinks');
if (parentDiv)
return parentDiv.getElementsByTagName('a').length;
else
return 0;
}
//Zeigt/Versteckt den übergebenen 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'
}
}
//wählt entsprechend der Navigation den nächsten Container zur Darstellung,macht diesen sichtbar
//und den zuletzt aktiven Container unsichtbar
function ovShowNextContainer(boxID,NavDirection,TargetPage,ForcedQueryString)
{
//queryString wird im Fall einer Parameterübergabe überschrieben
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 über
//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 über
//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 über
//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 über
//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;
}
}
}
}
//Überprüft,ob die Tabelle sortiert wurde und gibt,falls notwendig,einen entsprechend formatierten
//parameterstring zurück,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 zurück und selektiert den ausgewählten 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 ausgewählten 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);
}
}
//Fügt den,über 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;
}
//Fügt das über 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 über 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 für diesen Spieler noch nicht geladen -> über 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)
{
ovSlactSlide += 1;
if (ovSlactSlide>Max+ovSlslideshow_i){ovSlactSlide=ovSlstartSlide;}
ovSlUpdate(Ressort,ID,ovSlactSlide,Max)
}
function ovSlBack(Ressort,ID,Max)
{
ovSlactSlide -= 1;
if (ovSlactSlide<ovSlstartSlide){ovSlactSlide=Max+ovSlslideshow_i;}
ovSlUpdate(Ressort,ID,ovSlactSlide,Max)
}
function ovSlLast(Ressort,ID,Max)
{
ovSlactSlide=Max+ovSlslideshow_i;
ovSlUpdate(Ressort,ID,ovSlactSlide,Max)
}
function ovSlFirst(Ressort,ID,Max)
{
ovSlactSlide=ovSlstartSlide;
ovSlUpdate(Ressort,ID,ovSlactSlide,Max)
}
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;
if (ovAjax.isMSN){
var trackingmsn=$('trackingmsn');
if(trackingmsn){trackingmsn.src=ovSlMsnUrl+"?controlname="+ovSlControlname;}
}else{
ovAjax.SetIVW("101160;ki_slideshow");
}
}
function ovSlRefreshPreview()
{
$("slidearrow").style.left=ovSlpreviewpos+"px";
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);
}
// ---------------------------------------------------------------------------
//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");
}
// ---------------------------------------------------------------------------
//CommunityWechselbörse
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:Wechselbörse
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: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="rsstooltip_rss rsstooltip_item_hidden";
rssF1.className="rsstooltip_rss rsstooltip_item_hidden";
rssRad.className="rsstooltip_rss rsstooltip_item_hidden";
rssEH.className="rsstooltip_rss rsstooltip_item_hidden";
rssBB.className="rsstooltip_rss rsstooltip_item_hidden";
rssHB.className="rsstooltip_rss rsstooltip_item_hidden";
rssTennis.className="rsstooltip_rss rsstooltip_item_hidden";
rssAlle.className="rsstooltip_rss rsstooltip_item_hidden";
rssFBGoogle.className="rsstooltip_igoogle rsstooltip_item_hidden";
rssF1Google.className="rsstooltip_igoogle rsstooltip_item_hidden";
rssRadGoogle.className="rsstooltip_igoogle rsstooltip_item_hidden";
rssEHGoogle.className="rsstooltip_igoogle rsstooltip_item_hidden";
rssBBGoogle.className="rsstooltip_igoogle rsstooltip_item_hidden";
rssHBGoogle.className="rsstooltip_igoogle rsstooltip_item_hidden";
rssTennisGoogle.className="rsstooltip_igoogle rsstooltip_item_hidden";
rssAlleGoogle.className="rsstooltip_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="rsstooltip_rss";
rssAlleGoogle.className="rsstooltip_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="rsstooltip_rss";
rssHBGoogle.className="rsstooltip_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="rsstooltip_rss";
rssEHGoogle.className="rsstooltip_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="rsstooltip_rss";
rssBBGoogle.className="rsstooltip_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="rsstooltip_rss";
rssF1Google.className="rsstooltip_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="rsstooltip_rss";
rssTennisGoogle.className="rsstooltip_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="rsstooltip_rss";
rssRadGoogle.className="rsstooltip_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="rsstooltip_rss";
rssFBGoogle.className="rsstooltip_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){
$('halfvideobox').className='halfvideoboxdark';
$("halfvideobox").style.backgroundImage = "url(http://a.banner.t-online.de/apps/321/Ad4014913St3Sz225Sq3976196V9Id1/ad-hp-player_z.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/321/Ad4014913St3Sz225Sq3976196V9Id1/ad-hp-player_z_banner.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
function ovVirShow(cat)
{
var myAjax=new Ajax.Updater("video_content",ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=videoressortbar&videocategory="+cat,{ method: 'get',onSuccess:ovVirRefresh,evalScripts:true});
}
function ovVirRefresh()
{
ovAjax.SetIVW("40030;ki_tv_box");
}
// ---------------------------------------------------------------------------
//VideoRessort-More
function ovViLoadMore(container,videoid)
{
var myAjax=new Ajax.Updater(container,ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=videoressortmore&vid="+videoid,{ method: 'get',onSuccess:ovViMRefresh,evalScripts:true});
}
var ovSid="";
function ovViLoadMoreKey(container,videoid,sid)
{
ovSid=sid;
ovAjax.SetReloadIcon('vidM_content');
var myAjax=new Ajax.Updater(container,ovAjax.rootURL+"/rkajax/ajax.ashx?ajaxtype=videoressortmore&vid="+videoid+"&sid="+sid,{ method: 'get',onSuccess:ovViMRefresh,evalScripts:true});
}
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'+ovSid+"M");
}
if ($('inpVideoIVW')!=null){
if($('inpVideoIVW').value==""){
$('inpVideoIVW').value="ok";
}else{
ovAjax.SetIVW("40030;ki_tv_box");
}
}
}
function ovViMShowUrl()
{
}
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($('kicker1024') != 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'});
}
