/* Merged Plone Javascript file
 * This file is dynamically assembled from separate parts.
 * Some of these parts have 3rd party licenses or copyright information attached
 * Such information is valid for that section,
 * not for the entire composite file
 * originating files are separated by ----- filename.js -----
 */

/* ----- ploneportlets.js ----- */

  
// portlet asssignment screens

function movePortletDown(node){
    portlet = node.parentNode
    nextPortlet = portlet.nextSibling
    if (nextPortlet){
    shiftPortlets(nextPortlet, portlet)
    }
}

function movePortletUp(node){
    portlet = node.parentNode
    previousPortlet = portlet.previousSibling
    if (previousPortlet){
    shiftPortlets(portlet, previousPortlet)
    }
}

function shiftPortlets(bottom, top){
    portlet = bottom
    previousPortlet = top
    while (previousPortlet.nodeType == 3){
         previousPortlet = previousPortlet.previousSibling
        }
    while (portlet.nodeType == 3){
         portlet = portlet.nextSibling
        }
    x = portlet.firstChild.value
    y = previousPortlet.firstChild.value
    portlet.firstChild.value = y
    previousPortlet.firstChild.value= x
    portlet.parentNode.insertBefore(portlet, previousPortlet )
    
}
  
  
  
function minimizeCookiePortlets(){


      var portlets = new String()
      var portletsarray = new Array()
      portlets =  readCookie('mmploneportlets')
      //alert(portlets)
      if (portlets){
            portletsarray = portlets.split('::')
            
            for (var i=0; (p=portletsarray[i]); i++){
                //alert(portletsarray[p])
                togglePortlet(p)
            }
         }
     }
function registerEventListener(elem, event, func) {
    if (elem.addEventListener) {
        elem.addEventListener(event, func, false);
        return true;
    } else if (elem.attachEvent) {
        var result = elem.attachEvent("on"+event, func);
        return result;
    }
    // maybe we could implement something with an array
    return false;
}

function registerPloneFunction(func) {
    // registers a function to fire onload.
    registerEventListener(window, "load", func);
}
registerPloneFunction(minimizeCookiePortlets)   

function savePortletToggle(portletid, remove){

       // debugger

        // for when we need to clear the cookies for debugging
        // createCookie('mmploneportlets',"",-1)

        var portlets = new String()
        var portletsarray = new Array()
        var newportletsarray = new Array() 
        
        portlets =  readCookie('mmploneportlets')

        if (portlets){
            portletsarray = portlets.split('::')
            for (var i=0; (p=portletsarray[i]); i++){
                if (p != portletid){
                    newportletsarray.push(p)
                    }
                }
            }
        // duplicate the array of portlets, but leave out the current portlet

            
        // if we are adding a portlet, append it to the array
        if (! remove){  
             newportletsarray.push(portletid)
        }    
        portlets = newportletsarray.join('::')
        // alert(portlets)
        createCookie('mmploneportlets', portlets)
    }
    
function togglePortlet(pt){
    // this is the function that collapses/expands portlets.
    if (typeof(pt) == 'string'){
        // probably from the script detecting cookies. look up the object
        portlet = document.getElementById(pt)
        if (! portlet){ return false }
        icon = portlet.getElementsByTagName('A')[0]
        node = icon
    } else if (!pt.nodeType){
        // e is probably an event on the image
        var node = window.event ? window.event.srcElement : pt.currentTarget;      
    } else {
        // finally , it might just be the icon node itself.
        node = pt
    }
    //debugger
    if (! icon){var icon = node}
    if (! portlet){var portlet = node.parentNode.parentNode}
    

    for (var f = 0; f < portlet.childNodes.length; f++) {
         child = portlet.childNodes[f]
         if (child.nodeName=='DD'){
             if(child.className ==('portletItemSingle')){portletContents=child;}
             break
             //else if (child.className.indexOf('portlet-collapsed-info')!=-1){replacementContents=child}
            }
         }
    if( icon.firstChild.nodeValue == "+"){
        icon.firstChild.nodeValue="-"
        portletContents.style.display = 'block'
        //replacementContents.style.display = 'none'
        savePortletToggle(portlet.getAttribute('id'),"remove")
    }else{
         icon.firstChild.nodeValue="+"
         portletContents.style.display = 'none'
         //replacementContents.style.display = 'block'
         savePortletToggle(portlet.getAttribute('id'))
        }
    return false
    }

/* ----- leaseplan.js ----- */
/*****************************************************
*
* JavaScript Sourcefile for "leaseplan.at"
*
* Copyright 2003 by Andreas de Pretis, Gerhard Sinnhuber
*
*       URL: http://www.leaseplan.at
*
* Author(s): http://www.25th-floor.com
*            http://www.depretis.at
*            http://www.transform.at
*
* $Id: leaseplan.js,v 1.1 2006/02/23 10:40:22 rfasching Exp $
*
*****************************************************/

function openFloatingWindow(param,w,h) {
window.open(param,"newwindow","left=50,top=30,toolbar=1,location=1,directories=0,menuBar=1,scrollbars=1,resizable=1,width="+w+",height="+h);
}

function openFloatingWindowNoScroll(param,w,h) {
window.open(param,"newwindow","left=50,top=30,toolbar=0,location=0,directories=0,menuBar=0,scrollbars=0,resizable=0,width="+w+",height="+h);
}

function openFloatingWindowFormular(param,w,h) {
window.open(param,"newwindow","left=50,top=30,toolbar=0,location=0,directories=0,menuBar=0,scrollbars=auto,resizable=1,width="+w+",height="+h);
}
function openFloatingWindowFormularScroll(param,w,h) {
window.open(param,"newwindow","left=50,top=30,toolbar=0,location=0,directories=0,menuBar=0,scrollbars=yes,resizable=1,width="+w+",height="+h);
}


function xmlbanner_DoFSCommand(command, args) {
  if (command == "umfrage") {
   openFloatingWindowNoScroll(args,'500','400');
  }
}


function XMLBannerLink(args){
	// alert("Umfrage starten");
	openFloatingWindowNoScroll(args,'550','400');
}

function MM_findObj(n, d) {
	var p,i,x;
	if(!d) d = document;
	if((p = n.indexOf("?")) > 0 && parent.frames.length) {
		d = parent.frames[n.substring(p+1)].document;
		n = n.substring(0,p);
	}
	if(!(x=d[n]) && d.all) x=d.all[n];
	for(i=0; !x && i < d.forms.length; i++)
		x = d.forms[i][n];
	for(i=0; !x && d.layers && i < d.layers.length; i++)
		x = MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x = d.getElementById(n);
	return x;
}



function MM_swapImage() {
	var i, j=0, x, a = MM_swapImage.arguments;
	document.MM_sr = new Array;
	for(i = 0; i < (a.length-2); i += 3)
		if ((x = MM_findObj(a[i])) != null) {
			document.MM_sr[j++] = x;
			if(!x.oSrc) x.oSrc = x.src;
			x.src = a[i+2];
		}
}



function MM_swapImgRestore() {
	var i, x, a = document.MM_sr;
	for(i = 0; a && i<a.length && (x = a[i]) && x.oSrc; i++)
  		x.src = x.oSrc;
}



function MM_preloadImages() {
	var d = document;
	if(d.images) {
		if(!d.MM_p) d.MM_p = new Array();
		var i, j = d.MM_p.length, a = MM_preloadImages.arguments;
		for(i = 0; i < a.length; i++)
			if (a[i].indexOf("#") != 0) {
				d.MM_p[j] = new Image;
				d.MM_p[j++].src = a[i];
			}
	}
}

function SetElementValue(element, value) {
        document.forms['main'].elements[element].value = value;
        document.forms['main'].submit();
}

function openURL(list) {
  var url = list.options[list.selectedIndex].value;
  if (url != '') window.open(url,"LeasePlan","left=50,top=30,toolbar=1,location=1,directories=0,menuBar=1,scrollbars=1,status=1,resizable=1");
}



/* ----- jsorder.js ----- */

function jsorder_findObjectID(obj) {
    var a = jsorder_findElement(obj, "a");
    var req = decodeURI(a.href).split("?");
    var args = req[1].split("&");
    for (var n = 0; n < args.length; n++) {
        if (args[n].slice(0, 3) == "id=") {
	    return args[n].slice(3);
	}
    }
    throw "no id found";
}

function jsorder_findElement(obj, tagName) {
    tagName = tagName.toUpperCase();
    while (obj != null && obj.tagName != tagName) {
         obj = obj.parentNode;
    }
    return obj;
}

function jsorder_stopEvent(event) {
    if (document.all) {
        event.cancelBubble = true;
        event.returnValue = false;
    } else {
        event.preventDefault();
        event.stopPropagation();
    }
    return false;
}

function jsorder_switchClasses(a, b) {
    var tmp = a.className;
    a.className = b.className;
    b.className = tmp;
}

function jsorder_baseuri(uri) {
    var url = decodeURI(uri).split("/");
    if (url[url.length - 1] != "") {
        url.length = url.length - 1;
    }
    return url.join("/");
}

function jsorder_rpc(func, args) {
    var uri = jsorder_baseuri(document.URL);
    var srv = XMLRPC.getService(uri);
    var res = srv.call(func, args);
    return res;
}

function jsorder_moveUp(event) {
    var ev = event ? event : window.event;
    var target = ev.target ? ev.target : ev.srcElement;
    var obj = jsorder_findElement(target, "tr");
    var prev = obj.previousSibling;
    while (prev && obj.nodeName != prev.nodeName) {
        prev = prev.previousSibling;
    }
    if (prev) {
        prev.parentNode.insertBefore(obj, prev);
        jsorder_switchClasses(obj, prev);
        var id = jsorder_findObjectID(target);
	var args = new Array(id, "up");
        jsorder_rpc("jsorder_move", args);
    }
    return jsorder_stopEvent(event);
}

function jsorder_moveDown(event) {
    var ev = event ? event : window.event;
    var target = ev.target ? ev.target : ev.srcElement;
    var obj = jsorder_findElement(target, "tr");
    var next = obj.nextSibling;
    while (next && obj.nodeName != next.nodeName) {
        next = next.nextSibling;
    }
    if (next) {
        next.parentNode.insertBefore(next, obj);
        jsorder_switchClasses(next, obj);
        var id = jsorder_findObjectID(target);
	var args = new Array(id, "down");
        jsorder_rpc("jsorder_move", args);
    }
    return jsorder_stopEvent(event);
}

function jsorder_addActions(obj) {
    var links = obj.getElementsByTagName("a");
    for (var n = 0; n < links.length; n++) {
        var a = links[n]; 
        if (a.className == "up" || a.href.search(/\/folder_position\?position=up/) >= 0) {
	    registerEventListener(a, "click", jsorder_moveUp);
        }
        if (a.className == "down" || a.href.search(/\/folder_position\?position=down/) >= 0) {
	    registerEventListener(a, "click", jsorder_moveDown);
        }
    }
}

function jsorder_init() {
    var tables = document.getElementsByTagName("table");
    for (var n = 0; n < tables.length; n++) {
        if (tables[n].className == "listing") {
            jsorder_addActions(tables[n]);
        }
    }
}

registerPloneFunction(jsorder_init);



/* ----- hide_on_beteiligung.js ----- */
function parseArgs(args) {
   var AO = new Object();
   var AA = args.split("&");
   var TA = new Array();
   for (var i=0; i<AA.length; i++) {
     TA = AA[ i ].split("=");
     AO[ TA[0] ] = unescape( TA[1] );
   }
   return AO;
}

function toggleFields(cmd)
{
   if (cmd=='involving third party')
       show_beteiligung_controls()

   else if (cmd=='not involving third party')
       hide_beteiligung_controls()
   else hide_others()
}

function show_beteiligung_controls() {
    show_element('archetypes-fieldname-unfallgegner');
    show_element('archetypes-fieldname-kennzeichen_des_gegners');
    show_element('archetypes-fieldname-versicherung_gegner');
    show_element('archetypes-fieldname-addresse_des_gegners');
    show_element('archetypes-fieldname-telefonnummer_des_gegners');
    show_element('archetypes-fieldname-zeuge');
    show_element('archetypes-fieldname-addresse_des_zeugen');
    show_element('archetypes-fieldname-telefonnummer_des_zeugen');
    show_element('archetypes-fieldname-unfallhergang');
    show_element('archetypes-fieldname-schaden_mit_beteiligung');
    hide_element('archetypes-fieldname-schaden_ohne_beteiligung');
    hide_element('archetypes-fieldname-schaden_ohne_beteiligung_art');
    show_element('archetypes-fieldname-unfallbericht');
}

function hide_beteiligung_controls() {
    hide_element('archetypes-fieldname-unfallgegner');
    hide_element('archetypes-fieldname-kennzeichen_des_gegners');
    hide_element('archetypes-fieldname-versicherung_gegner');
    hide_element('archetypes-fieldname-addresse_des_gegners');
    hide_element('archetypes-fieldname-telefonnummer_des_gegners');
    hide_element('archetypes-fieldname-zeuge');
    hide_element('archetypes-fieldname-addresse_des_zeugen');
    hide_element('archetypes-fieldname-telefonnummer_des_zeugen');
    show_element('archetypes-fieldname-unfallhergang');
    hide_element('archetypes-fieldname-schaden_mit_beteiligung');
    show_element('archetypes-fieldname-schaden_ohne_beteiligung');
    show_element('archetypes-fieldname-schaden_ohne_beteiligung_art');
    hide_element('archetypes-fieldname-unfallbericht');
}

function hide_others() {
    hide_element('archetypes-fieldname-unfallbericht');
    
}

function show_element(id) {
    elem = document.getElementById(id)
    if (elem)
        elem.style.display = 'block';
}

function hide_element(id) {
    elem = document.getElementById(id) 
    if (elem)
        elem.style.display = 'none';
}

function set_element(id,value) {
    elem = document.getElementsByName(id)[0]
    if (elem)
        elem.value = value;
}


