// TSI JavaScript

// SelectBox als Verweisliste
function Go (select) {
  var wert = select.options[select.options.selectedIndex].value;
  if (wert == "empty" || wert=="#") {
    select.form.reset();
    return;
  } else {
    select.form.reset();
    var url = wert.search(/contentblob.+/);
    if(url != -1){
      window.open(wert,"Extern","width=670,height=800,scrollbars=yes");	
    } else {
      window.location.href = Ziel = wert;
    }
  }
}

// Funktion prueft auf ein gueltiges E-Mail Format
function checkEmail(email) {
  var proto  = "(mailto:)?";
  var usr    = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
  var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
  var regex  = "^" + proto + "?" + usr + "\@" + domain + "$";
  var rgx    = new RegExp(regex);	
  return rgx.exec(email) ? true : false;
}

// Funktion prüft anhand des Namens den verwendeten Browser
function checkBrowserName(bName) {
   var agent = navigator.userAgent.toLowerCase();
   if (agent.indexOf(bName.toLowerCase()) > -1) {
      return true;
   }	
   return false;
}

function stringEndsWithIgnoreCase(s, suffix) {
  compare = s.substring(s.length-suffix.length).toLowerCase();
  suffix = suffix.toLowerCase();
  //alert(compare==suffix);
  return (compare==suffix);
} 

// SelectBox welche auch Popups anzeigt 
function fctSelectList(value) {
   if (!value || value=="") return;
   value = value.split("|");
   if (value.length>1) {
      var modify = value[1].split(",");
      switch (modify[0]) {
        //workaround f. ie7 sicherheits feature, im popup ist die sicherheitswarnung nicht zu sehen,
        //deshalb werden zip dateien im selben fenster geoeffnet
        case "_blank": if (stringEndsWithIgnoreCase(value[0], "zip")) { t = "_self";} else {t = "_blank";} window.open(value[0],t);break;
         //case "_blank": window.open(value[0],"_blank");break;
         case "top": top.location.href=value[0];break;
         case "parent": parent.location.href=value[0];break;
         default:
            if (isNaN(modify[0]) && top.frames[modify[0]])
               top.frames[modify[0]].location.href=value[0];
            else if (!isNaN(modify[0])) {
               //600,500,0,0,1,0,1,printversion
               if (modify.length<8) {
                  if (top.frames["mainframe"])
                     top.frames["mainframe"].location.href=value[0];
                  else self.location.href=value[0];
               }  else {
                  fctOpenWin(value[0],modify[0],modify[1],modify[2],modify[3],modify[4],modify[5],modify[6],modify[7])
               }
            } else if (!top.frames[modify[0]]) self.location.href=value[0];
      }
   } else if (top.frames["mainframe"])
      top.frames["mainframe"].location.href=value[0];
   else self.location.href=value[0];
}


// Image im Popup
function ImageViewer(image,width,height) {
  options = "width="+(width+40)+", height="+(height+40)+", scrollbars";
  ImageWindow = window.open(image, "ImageViewer", options);
  ImageWindow.focus();
}

// Bereiche ein- und ausblenden
function changeCssClasses(tagName,class1,class2) {
  var obj=document.getElementsByTagName(tagName);
  for(i=0;i<obj.length;i++)
  {
    if(obj[i].className==class1) {
      obj[i].className=class2;
    } else if(obj[i].className==class2) {
      obj[i].className=class1;
    }
  }
}

// Helper Klasse
function helper() {

        this.positionHelper = positionHelper;
        this.booleanHelper = booleanHelper;
        this.sizeHelper = sizeHelper;
        this.getCleanedString = getCleanedString;
        this.changeLocationHelper = changeLocationHelper;
        this.locationCompareURL = locationCompareURL;


        function positionHelper(param,position) {
                if (param<0) return 0;
                if (window.screen) {
                        if (param>window.screen.availHeight && position=="top") return 0;
                        if (param>window.screen.availWidth && position=="left") return 0;
                }
                return param;
        }

        function sizeHelper(param,min) {
                if (isNaN(min)) min=200;
                if (isNaN(param) || param < min) return min;
                return param;
        }

        function booleanHelper(param) {
                //if (isNaN(param)) return 0;
                if (isNaN(param)) {
                   if(param=="true") return "yes"; else return "no";	
                }
                if (param<=0) return "no"; else return "yes";
        }

        function getCleanedString(param) {
                param = String(param).replace(/\W/gi,"");
                return param;
        }

        function changeLocationHelper(url,obj) {
                obj.location.replace(url);
        }

        function locationCompareURL(actURL,newURL) {
                return !(actURL==newURL);
        }

}

/**
 * Methode stellt CoBrowsing - Funktion zur Verfügung
 * - verwendet im GK-Portal
 */
function startchat() {
    window.open("https://webscout.geschaeftskunden-telekom.de/SmartChat/user/start.do?unit=tsn","sppopup","toolbar=0,status=no,titlebar=0,width=550,height=430");
}

// Klasse Initialisieren
myHelper = new helper();

// Popup oeffnen
function fctOpenWin(resource,height,width,top,left,blnScrollbar,blnResizable,blnMenubar,targetname)
{

  targetname = myHelper.getCleanedString(targetname);
  
  if( targetname=="") targetname = "MyWindow";
  
  height=myHelper.sizeHelper(height);
  width=myHelper.sizeHelper(width);
  top=myHelper.positionHelper(top,"top");
  left=myHelper.positionHelper(left,"left");
  blnScrollbar=myHelper.booleanHelper(blnScrollbar);
  
  blnResizable=myHelper.booleanHelper(blnResizable);
  blnMenubar=myHelper.booleanHelper(blnMenubar);
  F = window.open(resource,targetname,"height="+height+",width="+width+",menubar="+blnMenubar+",resizable="+blnResizable+",scrollbars="+blnScrollbar+",left="+left+",top="+top);
  if (F.focus) F.focus();
}

// schreibt eine Zufallszahl mit angegebener Laenge raus
function getRandom(length) {
  r=String(Math.random());
  str=r.substring(2,2+length);
  return str;
}

// Methode initialisiert Contentelemente - Wechselteaser
function initContentByClassName(classname, containerId) {
    var inc=0; 
    var alltags=document.all? document.all : document.getElementsByTagName("*"); 
    for (i=0; i<alltags.length; i++) {
        if (alltags[i].className==classname) 
         window["nachrichten" + containerId][inc++]=alltags[i]; 
    } 
}

// Methode realisiert Wechsel des Contents  - Wechselteaser
function switchContainerContent(containerId) { 
    bez_inhaltsindex = "inhaltsindex" + containerId;
    bez_nachrichten = "nachrichten" + containerId;
	
    window[bez_inhaltsindex] = (window[bez_inhaltsindex] < window[bez_nachrichten].length-1)? window[bez_inhaltsindex]+1 : 0; 
    vorherigerinhaltsindex = (window[bez_inhaltsindex]==0)? window[bez_nachrichten].length-1 : window[bez_inhaltsindex]-1; 
    window[bez_nachrichten][vorherigerinhaltsindex].style.display="none"; 
    window[bez_nachrichten][window[bez_inhaltsindex]].style.display="block"; 
} 

// realisiert die Anzeige der Bildgalerie im Mandanten BC
function galleryView(url,galleryName){
  url = url + "?gal=" + galleryName;
  url = encodeURI(url);
  window.location.href = url;
}

// FORMTOOL-DependentValidator
 function dependentManager(ds, fo, ro) {
 if (!ds || !ro || !fo) { return; }
 this.ds = ds; this.ro = ro; this.dsParents = new Array(); this.fo = fo;
 this.keyList = "OPEN,CLOSE,AND,OR,NOT"; this.submitString = null;
 this.isDataf = false; this.init = init;
 function init() {
 for (var i = 0; i < this.fo.length; i++) {
 if (this.fo[i].name && this.fo[i].name.indexOf("data[") > -1) {this.isDataf = true; break;} }
 for (var i in this.ds) {
  changefStatus(this.getf(i), this.checkEnable(ds[i]));
 this.registerdsForParents(ds[i], i);
 }this.addOnChangeHandlerToParents();this.registerSubmit();
 } this.getf = getf;function getf(key) {
 if (this.isDataf) {return this.fo["data["+key+"]"];} return this.fo[key];}
 this.registerSubmit = registerSubmit;
 function registerSubmit() {
 var eventString = 'return self["ref' + this.ro + '"].submitForm();'
 this.submitString = getEventHandlerData(this.fo, "onsubmit");
  if (document.all && !window.opera) { 
 this.fo.setAttribute('onsubmit', new Function(eventString), true);  }
 else { this.fo.setAttribute('onsubmit', eventString, true); }  }
 this.submitForm = submitForm;
 function submitForm() {
 for (var i in this.ds) { changefStatus(this.getf(i), true); } 
 if (this.submitString) { if (this.submitString.indexOf("return") > -1) {
 this.submitString = this.submitString.replace("return ", ""); 
 return (eval(this.submitString)); } else { eval(this.submitString);
 return true;} } else { return true; }}
 this.addOnChangeHandlerToParents = addOnChangeHandlerToParents; 
 function addOnChangeHandlerToParents() {
 for (var i in this.dsParents) { 
 this.addOnChangeHandlerTof(this.getf(i), i); } } this.rc = rc;
 function rc(key) { var dsList = this.dsParents[key];
 for (var i = 0; i < dsList.length; i++) { 
  changefStatus(this.getf(dsList[i]), this.checkEnable(this.ds[dsList[i]])) } }
 this.registerdsForParents = registerdsForParents; 
 function registerdsForParents(ds, dsKey) {
 for (var i = 0; i < ds.length; i++) {
 var key = ds[i];
 if (!this.isNotAf(key)) {
 if (!this.dsParents[key]) {
 this.dsParents[key] = new Array();  }
 this.dsParents[key][this.dsParents[key].length] = dsKey;  } }  } 
 this.checkEnable = checkEnable;
 function checkEnable(ds) { var booleanArray = new Array();
 for (var i = 0; i < ds.length; i += 2) { var key = ds[i]; if (this.isNotAf(key)) {
 booleanArray[booleanArray.length] = key; i--; continue;
 } var f = this.getf(key); var value = getfValue(f); if (value == void(0)) {
 booleanArray[booleanArray.length] = false; continue; } var reg = new RegExp(ds[i+1]);
 booleanArray[booleanArray.length] = reg.test(value); } 
 return getResult(booleanArray); } this.isNotAf = isNotAf;
 function isNotAf(key) {
 return (this.keyList.indexOf(key.toLowerCase()) != -1 || !this.getf(key));  } 
 this.addOnChangeHandlerTof = addOnChangeHandlerTof;
 function addOnChangeHandlerTof(f, key) {
 var eventString = 'self["ref' + this.ro + '"].rc("' + key +'");'
 var type = getfType(f);  if (type != "radio") {  if (type == "checkbox") {
 eventString += getEventHandlerData(f, "onclick");
 if (document.all && !window.opera) { 
 f.setAttribute('onclick', new Function(eventString), true);  } else {
 f.setAttribute('onclick', eventString, true); }  } else { 
 eventString += getEventHandlerData(f, "onchange"); 
 if (document.all && !window.opera) {
 f.setAttribute('onchange', new Function(eventString), true); } else {
 f.setAttribute('onchange', eventString, true); } }  }
 else { for (var i = 0; i < f.length; i++) {
 eventString += getEventHandlerData(f[i], "onclick");
 if (document.all && !window.opera) { 
 f[i].setAttribute('onclick', new Function(eventString), true);
 } else { f[i].setAttribute('onclick', eventString, true); } } } }
 function getEventHandlerData(f, handle) {
 var handle = f.getAttribute(handle);
 if (handle == null) { return ""; }
 if (!document.all || window.opera) { return handle; }
 handle = handle.toString().replace("function anonymous()","");  return handle; }
 function getResult(booleanArray) {
 if (booleanArray.length == 1) { return booleanArray[0]; }  var evalString = "" 
 for (var i = 0; i < booleanArray.length; i++) {
 if (booleanArray[i] === true || booleanArray[i] === false) {
 evalString += booleanArray[i];
 } else if (booleanArray[i] == "OPEN") { evalString += "(";
 } else if (booleanArray[i] == "CLOSE") {  evalString += ")";
 } else if (booleanArray[i] == "AND") {  evalString += " && ";
 } else if (booleanArray[i] == "OR") {  evalString += " || ";
 } else if (booleanArray[i] == "NOT") {  evalString += " !"; } } 
 return eval(evalString); }
 function getfType(f) { 
 if (f.type == void(0) && f.length > 0) {
 return f[0].type.toLowerCase(); } return f.type.toLowerCase(); }
 function getfValue(f) { var type = getfType(f); if (type == 'checkbox') {
 if (f.checked) { return f.value; } else {
 return void(0); } } if (type == 'radio') { for (var i = 0; i < f.length; i++) { 
 if (f[i].checked) {  return f[i].value; } } return void(0); }
 if (type == 'select-one') {
 return f[f.selectedIndex].value; }  return f.value; }
 function changefStatus(f, status) { 
 var type = getfType(f);
 if (type == "radio" && f.length != void(0)) {
 for (var i = 0; i < f.length; i++) { changefStatus(f[i], status);
 } return; } if (status) {
 if (type.indexOf("select") == -1) { f.readOnly = false;
 }  f.disabled = false; } else {
 if (type.indexOf("select") == -1) { f.readOnly = true; }  f.disabled = true; } } } 