//alert('js-library.js');
var selectCat2;
var selectCat3;

/*
* 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;
}
