//alert('js-library.js');
var selectCat2;
var selectCat3;

var bitteWaehlen = '<bitte wählen>';

/*
* Fills one Drop-Down-Field from another Drop-Down-Field
* and select the an entry in this Drop-Down-Field.
* @param CatIDSourceField:
* <select name="<CatIDTargetField>" 
* 		  id="<CatIDTargetField>" 
* 		  class="..." 
* 		  onChange="changeDependingSelectField('CatIDSourceField', '<CatIDTargetField>',
*                                               <subCategories>,'<formname>',
*                                               '{bitte_waehlen}', 6)">...
*                                               </select>
* @param CatIDTargetField: 
* <select name="<CatIDTargetField>" id="<CatIDTargetField>" class="...">
* @param subCategories: get this form an array like this
* <templateLoop> (e.g. itemlist ...)
* unterKategorien[{i}] = new Array('{target_id}','{name}','{id}');
* </templateLoop>
* @param formName: e. g. <form method="post" name="<formname>">...
* @param TopItemDescription: e. g. 'bitte wählen'
* @param SelectedIndexValueTargetField: -> the number of the selected value -> so that will be displayed
* @author Sebastian Güldenberg <sebastian@gueldenberg.com>
* @version 26.10.2009
 */
function changeDependingSelectField(CatIDSourceField,
                     				CatIDTargetField,
                     				subCategories,
                     				formName,
                     				TopItemDescription,
                     				SelectedIndexValueTargetField){
  var SelectSourceField = document.forms[formName].elements[CatIDSourceField];
  var SelectTargetField = document.forms[formName].elements[CatIDTargetField];
 
  if(TopItemDescription==null) TopItemDescription = 'Bitte waehlen';
  if(SelectedIndexValueTargetField==null) SelectedIndexValueTargetField = 0;
  
  var argv = SelectSourceField.options[SelectSourceField.selectedIndex].value;
  var count = 1;

    SelectTargetField.length=0;
    SelectTargetField.options[0] = new Option(TopItemDescription,"0");
    
    for(var j=0; j < subCategories.length; j++){
        if(subCategories[j][0] == argv){
          SelectTargetField.options[count] = 
               new Option(subCategories[j][1],subCategories[j][2]);
         
          if(SelectedIndexValueTargetField>0){
            if(SelectTargetField.options[count].value==
                          SelectedIndexValueTargetField){
              SelectTargetField.selectedIndex = count;
            }
          }
          count++;
        }
    }
}


/*
 * Debug Funktionen
 * TODO: Fälle für type bool,function,undefined einbauen
 */
function dump_var (variable,tab) {
  if(typeof(tab) === "undefined") tab="";
  if((typeof(variable)) === "string" || (typeof(variable)) === "number") return variable+"\n";
  if((typeof(variable)) === "object") {
    var ret = "{\n";
    for (var piece in variable) {
      ret += tab+piece+" => "+dump_var(variable[piece], tab+"  ");
    }
    ret += tab+"}\n";
    return ret;
  }
  return tab+"Variable entspricht keinem erwarteten Typ.\n";
/*
boolean (Ja/Nein-Variable),
string (Zeichenkettenvariable),
number (numerische Variable),
function (Funktion),
object (Objekt),
undefined (unbestimmter Typ)
*/
}

function intval (mixed_var, base) {
  // http://kevin.vanzonneveld.net
  // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +   improved by: stensi
  // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // *     example 1: intval('Kevin van Zonneveld');
  // *     returns 1: 0
  // *     example 2: intval(4.2);
  // *     returns 2: 4
  // *     example 3: intval(42, 8);
  // *     returns 3: 42
  // *     example 4: intval('09');
  // *     returns 4: 9

  var tmp;

  var type = typeof( mixed_var );

  if (type == 'boolean'){
      if (mixed_var == true) {
          return 1;
      } else {
          return 0;
      }
  } else if (type == 'string'){
      tmp = parseInt(mixed_var * 1, 10);
      if (isNaN(tmp) || !isFinite(tmp)){
          return 0;
      } else{
          return tmp.toString(base || 10);
      }
  } else if (type == 'number' && isFinite(mixed_var) ){
      return Math.floor(mixed_var);
  } else{
      return 0;
  }
}

function checkWordlength(formField){
	 var Satz = formField.value; //document.ArticleData.uaTeaser.value;
	 var Woerter = Satz.split(" ");
	 var maxWordLength = 25;
		for (i = 0; i < Woerter.length; i++){
			if (Woerter[i].length > maxWordLength){
				//alert("{zu_langes_wort} "+Woerter[i]);
				Woerter[i] = Woerter[i].substr(0,maxWordLength);
				formField.value = Woerter.join(" ");
			}
		}
}

function letterCounterTextField(userlength,formField,msgTargetFormField, msg, allowedWordLength){
	   if(allowedWordLength == null) allowedWordLength = 0;
	  
	   
	   var  wert, maxlen;
	   var  fromLength = 0;
	   //msgTargetFormField = document.ArticleData.msgtxt.value;
	   maxlen  = userlength - (fromLength + 1);
	   wert  = maxlen - formField.value.length;
	   if (wert < 0){  
			formField.value = formField.value.substr(0,maxlen);
	   }
	   //alert(msg);
	   if(msg == null){
		   	msg = "Es stehen Ihnen noch " + (maxlen - formField.value.length) + 
		   		  " Zeichen zur Verfügung.";
		   	msgTargetFormField.value  = msg;
	   }else{
		   msgTargetFormField.value  = msg + " " + (maxlen - formField.value.length);
	   }

	   
	   if(allowedWordLength > 0) checkWordlength(formField);
}

function openHelp(url){
	helpp = open(url,"hp","width=425,height=600,status=no,toolbar=no,menubar=no,scrollbars=no");
  }

function hideHTMLBlock(htmlBlockID){
	$(htmlBlockID).html("");
	return false;
}

function redirect(redirectTarget)
{
  redirectPage(redirectTarget);
}
function redirectPage(redirectTarget)
{
  if(redirectTarget != null && redirectTarget != '')
  {
    document.location.href = redirectTarget;
  }
}
// String 
function strTrim (zeichenkette) {
  return zeichenkette.replace(/^\s+/, '').replace (/\s+$/, '');
}

function strRemoveLastSpecialSign(str,sign){
  if(sign != null){
    var newstr = '';
    var lenthOfString = str.length;
    var lastIndexOfSign = str.lastIndexOf("&") + 1;
    if(lenthOfString == lastIndexOfSign){
      newstr = str.substr(0,lenthOfString - 1);
      //alert(lastIndexOfSign + '--' + lenthOfString+'###remove00'+str);
    }
    return newstr;
  }
  

}

function replaceDivBoxElements(dataArray, 
                               from, to, 
                               targetBoxID,
                               outputtype, 
                               cssclassprefix){
  if(outputtype == null) outputtype = 'p';
  if(cssclassprefix == null) cssclassprefix = 'boxLine';
  
  if(dataArray && from >= 0 && to > 0){
    var newHTML = '';
    var newHTMLElements = '';
    if(to > dataArray.length) to = dataArray.length;
    for(var i = from; i < to; i++){
      for(var j = 0; j < dataArray[i].length; j++){
        if(outputtype == 'table'){
          newHTMLElements += '<td class="' + cssclassprefix + '_' + i + '">' + dataArray[i][j] + "</td>";
        }else{
          newHTMLElements += dataArray[i][j];
        }
      }
      if(outputtype == 'p'){
        newHTML += '<p class="'+ cssclassprefix + '_' + i + '">'+ newHTMLElements +'</p>\n';
      }else if(outputtype == 'table'){
        newHTML += '<tr class="'+ cssclassprefix + '_' + i + '">'+ newHTMLElements +'</tr>\n';
      }
      newHTMLElements = '';
    }
    //alert(newHTML);
    $('#' + targetBoxID).html(newHTML);
  }
}

function show2DArrayValuesByAlert(arValues){
  var strArTmp = '';
  var strArNew = '';
  for(var i = 0; i < arValues.length; i++){
    for(var j = 0; j < arValues[i].length; j++){
      strArTmp += arValues[i][j] + '|';
    }
    strArNew += strArTmp + '[#LINEEND#]\n';
  }
  alert(strArNew);
}
function checkIfStringIsLink(strToAnalyse){
  var ergebnis = strToAnalyse.search(/http:/);
  if (ergebnis != -1){
    return true;
  }else{
    return false; 
  }
}

