com = this.com || {};
com.camline = com.camline || {};
com.camline.portal = function () {
  var myNamespace = com.camline.portal || {};
  var init = function () {
    if ($("offlineInfo")) {
      // check status of support site
      new Request.JSON({
        url: "http://www.camline.com/fileadmin/templates/diamond/offlineCheck.php",
        onSuccess: function(response) {
          if (!response.online) {
            $("offlineInfo").removeClass("hide");
          }
        }
      }).get({
       url: "https://extranet.camline.com/servicewebclient/login.aspx"
      });
    }
    if ($("map_canvas")) {
      var map = new google.maps.Map2($("map_canvas"));
      var loc = new google.maps.LatLng(48.416470,11.475906);
      map.setCenter(loc, 14);
      map.addControl(new google.maps.SmallMapControl());

      var endMarker = new google.maps.Marker(loc, {title: "camLine"});
      endMarker.bindInfoWindow($("myinfo"), {noCloseOnClick:true});
      endMarker.openInfoWindow($("myinfo"), {noCloseOnClick:true});
      map.addOverlay(endMarker);

      $("myform").addEvent("submit", function (e) {
         var dir = new google.maps.Directions();

         GEvent.addListener(dir, "load", function () {
           var polyline = dir.getPolyline();
           var bounds = polyline.getBounds();
           map.setCenter(bounds.getCenter(map), map.getBoundsZoomLevel(bounds));
           map.addOverlay(polyline);
           var startMarker = new google.maps.Marker(dir.getMarker(0).getLatLng());
           map.addOverlay(startMarker);
           map.closeInfoWindow();
         });
         dir.loadFromWaypoints([$("mycity").value, loc], {getPolyline: true});  
         e = new Event(e).stop();
      });
    }
    /*if ($("mailform")) {
      // check registration form
      $("mailform").addEvent("submit", function(e) {
        if (!$("mailformcamline_forum").checked && !$("mailformspace_meeting").checked) {
          alert("Please select at least one of the two check boxes.");
          new Event(e).stop();
        }
      });
    }*/
    if ($("metanav")) {
      $("metanav").getChildren("li").each(handleDropFlyout);
    }
    if ($("nav1")) {
      $("nav1").getChildren("li").each(handleDropFlyout);
    }
    if ($("nav2")) {
      $("nav2").getElements("li").each(handleLeftFlyout);
    }
    if ($("frontpage_teasers")) {
      $("frontpage_teasers").getElements("dt").each(handleTabSwitch);
    }
  };
  var handleDropFlyout = function(elemLi) {
    elemLi.addEvent("mouseover",
      function () {
        elemLi.addClass("on");
      }
    );
    elemLi.addEvent("mouseout",
      function () {
        elemLi.removeClass("on");
      }
    );
  };
  var handleLeftFlyout = function(elemLi) {
    if (elemLi.hasClass("flyout")) {
      var elemsUl = elemLi.getChildren("ul");
      if (elemsUl.length > 0) {
        elemsUl[0].addEvent("mouseover",
          function (evt) {
            var flyout = $(evt.target).getParent("ul");
            var links = flyout.parentNode.getChildren("a");
            if (links.length > 0) links[0].addClass("over");
          }
        );
        elemsUl[0].addEvent("mouseout",
          function (evt) {
            var flyout = this.nodeType ? this : $(evt.target).getParent("ul");
            var links = flyout.parentNode.getChildren("a");
            if (links.length > 0) links[0].removeClass("over");
          }
        );
      }
    }
  };
  var handleTabSwitch = function(elemDt) {
    if (elemDt.hasClass("tab")) {
      elemDt.getElements("a").each(
        function(link) {
          link.addEvent("click", function (evt) {
            try {
              selectCurrent($(evt.target));
            } catch(e) {}
          });
          link.addEvent("mouseover", function (evt) {
            var currentOver = $(evt.target);
            currentOver.removeClass("out");
            window.setTimeout(function () {
              try {
                if (!currentOver.hasClass("out")) {
                  selectCurrent(currentOver);
                }
              } catch(e) {}
            },
            500);
          });
          link.addEvent("focus", function (evt) {
            selectCurrent($(evt.target));
          });
          link.addEvent("mouseout", function (evt) {
            var sourceMouseOut = evt.fromElement; //for IE
            if (!sourceMouseOut) {
              var sourceMouseOut = evt.target; //for Firefox
            }
            $(evt.target).addClass("out");
          });
        }
      );
    }
  };
  var selectCurrent = function (currentLink) {
    if (currentLink) {
      var parent = $(currentLink.parentNode.parentNode);
      parent.getElements("dt").each(
        function(elemDt) {
          var link = $(elemDt.firstChild);
          if (link) {
            link.removeClass("aktiv");
          }        
        }
      );
      parent.getElements("dd").each(
        function(elemDd) {
          elemDd.addClass("invisible");      
        }
      );
      currentLink.addClass("aktiv");
      var currentContent = $(currentLink.parentNode.id + "_content");
      if (currentContent) {
        currentContent.removeClass("invisible");
      }
    }
  };
  myNamespace.init = init;
  return myNamespace;
} ();
window.addEvent("domready", com.camline.portal.init);
