/// <reference path="jquery/jquery.131.js" />

// CharCounter...
var charsToGo;

// ------------------------------------------------------------------------------------------
// http://www.dexign.net/post/2008/07/16/jQuery-To-Call-ASPNET-Page-Methods-and-Web-Services.aspx
function PageMethod(pagePath, methodName, paramList, successFn, errorFn) {
    paramList = '{' + paramList + '}';
    $.ajax({
        type: "POST",
        url: pagePath + "/" + methodName,
        contentType: "application/json; charset=utf-8",
        data: paramList,
        dataType: "json",
        success: successFn,
        error: errorFn
    });
} 
// --------------------------------------------------------------------------------------------------------
function isUrl(s) {
    var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
    return regexp.test(s);
}
// --------------------------------------------------------------------------------------------------------
function trim(s) {

    while (s.substring(0,1) == ' ') {
        s = s.substring(1,s.length);
    }
    while (s.substring(s.length-1,s.length) == ' ') {
        s = s.substring(0,s.length-1);
    }
    return s;
}
// ------------------------------------------------------------------------------------
function increaseTextarea(eTextarea) {
    var iRows = parseInt($("#" + eTextarea).attr("rows"));
    iRows += 3;
    $("#" + eTextarea).attr("rows", iRows);
}
// ------------------------------------------------------------------------------------
function replaceIt(string,suchen,ersetzen) {
    ausgabe = "" + string;
    while (ausgabe.indexOf(suchen)>-1) {
        pos= ausgabe.indexOf(suchen);
        ausgabe = "" + (ausgabe.substring(0, pos) + ersetzen + ausgabe.substring((pos + suchen.length), ausgabe.length));
    }
    return ausgabe;
}
// --------------------------------------------------------------------------------------------------------
function checkValueToTextfield(cCheckbox, cTextfield, sDelimiter) {

    var sCheckValue = cCheckbox.value;
    var sValueList = cTextfield.value;
    var aValues = sValueList.split(",");
    var sTemp = '';
    
	// hinzufügen...
	for (i=0; i < aValues.length; i++) {
		var sValue = trim(aValues[i]);
		sTemp += sValue;
		if (cTextfield.value.length > 0) { sTemp += sDelimiter }
	}
	sTemp += sCheckValue;

	cTextfield.value = sTemp;    
}
// --------------------------------------------------------------------------------------------------------
function uncheckValueFromTextfield(cCheckbox, cTextfield, sDelimiter) {

    var sCheckValue = cCheckbox.value;
    var sValueList = cTextfield.value;
    var aValues = sValueList.split(",");
    var sTemp = '';
    
	// löschen
	for (i=0; i < aValues.length; i++) {
		var sValue = trim(aValues[i]);
		if (sValue != trim(sCheckValue)) {
			if (sValue.length > 0) {
				sTemp += sValue + sDelimiter;
			}
		}
	}
	sTemp = sTemp.substr(0, sTemp.length - 1);
	cTextfield.value = sTemp;    
}
// ------------------------------------------------------------------------------------
function changeParamsAndReloadPage(sParam, sValue, bOnly) {
    
    var sLoc = window.location.href;
    var aURL = sLoc.split("?");
    var sNewParams;
    var bFound = false;
    
    if (aURL.length == 1) {
    	sLoc += '?' + sParam + '=' + sValue;
    }
    else {
    	var sParams = aURL[1];
    	var aParams = sParams.split('&');
    	for (var i = 0; i < aParams.length; i++) {
    		var aParam = aParams[i].split('=');
    		if (aParam[0].toLowerCase() == sParam.toLowerCase()) {
    			aParams[i] = sParam + '=' + sValue;
    			bFound = true;
    			break;
    		}
    	}
    	if (bOnly == false) {
    	    for (var i = 0; i < aParams.length; i++) {
    		    if (i==0) {
    			    sNewParams = (aParams[i]);
    		    } else {
    			    sNewParams += (aParams[i]);
    		    }
    		    if (i < aParams.length-1) { sNewParams += '&'; }
    	    }
    	    if (bFound == false) {
    		    sNewParams += '&' + sParam + '=' + sValue;
    	    }
        } else {
            sNewParams = sParam + '=' + sValue;
        }
    	sLoc = (aURL[0] + '?' + sNewParams);
    }
    //alert(sLoc);
	return sLoc;
}
// ------------------------------------------------------------------------------------
function charCounter(charInputSrcName, maxCharCount) {

	// Zugriffsvariablen festlegen
	var charInputSrc = document.getElementById(charInputSrcName);

	if (charInputSrc != null) {
		// Länge des Feldinhaltes prüfen
		if (charInputSrc.value.length > maxCharCount) {
        	// FALSE: Eingegebenes Zeichen wieder abschneiden
        	charInputSrc.value = charInputSrc.value.substring(0, maxCharCount);
        	charsToGo = maxCharCount - charInputSrc.value.length;		
		}
        else {
			// TRUE: Anzahl Restzeichen berechnen
			charsToGo = maxCharCount - charInputSrc.value.length;
        }
	}
}
// ------------------------------------------------------------------------------------
function formatZahl(zahl, k, fix)
{
    // formatiert Zahlen mit Nachkommastellen
    
    // http://javascript.jstruebig.de/javascript/37/
    // usage: format_zahl( number [, number]  [, bool]  )

    if(!k) k = 0;
    var neu = '';
    // Runden
    var f = Math.pow(10, k);
    zahl = '' + parseInt( zahl * f + (.5 * (zahl > 0 ? 1 : -1)) ) / f ;
    // Komma ermitteln
    var idx = zahl.indexOf('.');
    // fehlende Nullen einfügen
    if(fix)
    {
         zahl += (idx == -1 ? '.' : '' ) + f.toString().substring(1);
    }
    // Nachkommastellen ermittlen
    idx = zahl.indexOf('.');
    if( idx == -1) idx = zahl.length;
    else neu = ',' + zahl.substr(idx + 1, k);

    // Tausendertrennzeichen
    while(idx > 0)
    {
        if(idx - 3 > 0)
        neu = '.' + zahl.substring( idx - 3, idx) + neu;
        else
        neu = zahl.substring(0, idx) + neu;
        idx -= 3;
    }
    return neu;
}
// ------------------------------------------------------------------------------------
function bbcode(form, field, v) {
 
 switch (v) {
    case "list":    var v1 = "[list][*]";    var v2 = "[/list]";     break;
    case "list1":   var v1 = "[list=1][*]";  var v2 = "[/list]";     break;
    default:        var v1 = "[" + v + "]";  var v2 = "[/" + v + "]"; break
 }

 if (document.selection) // for IE
   {
    var str = document.selection.createRange().text;
    document.forms[form].elements[field].focus();
    var sel = document.selection.createRange();
    sel.text = v1 + str + v2;
    return;
   }
  else if ((typeof document.forms[form].elements[field].selectionStart) != 'undefined') // for Mozilla
   {
    var txtarea = document.forms[form].elements[field];
    var selLength = txtarea.textLength;
    var selStart = txtarea.selectionStart;
    var selEnd = txtarea.selectionEnd;
    var oldScrollTop = txtarea.scrollTop;
    var s1 = (txtarea.value).substring(0,selStart);
    var s2 = (txtarea.value).substring(selStart, selEnd);
    var s3 = (txtarea.value).substring(selEnd, selLength);
    txtarea.value = s1 + v1 + s2 + v2 + s3;
    txtarea.selectionStart = s1.length;
    //txtarea.selectionEnd = s1.length + 5 + s2.length + v.length * 2;
    txtarea.selectionEnd = s1.length + v1.length + s2.length + v2.length;
    txtarea.scrollTop = oldScrollTop;
    txtarea.focus();
    return;
   }
  else insert(form,field, v1 + v2);
 }
// ------------------------------------------------------------------------------------
function bbcode_link(form, field)
 {
 var link_text='Text (optional):';
 var link_target='URL:';

 if (document.selection) // for IE
   {
    var str = document.selection.createRange().text;
    document.forms[form].elements[field].focus();
    var sel = document.selection.createRange();
    var insert_link = prompt(link_target,'http://');
    
    if(sel.text=='' && insert_link!='' && insert_link!=null) {
        str = prompt(link_text,'');
    }
    
    if(insert_link && str!=null)
     {
      if(str!='') { 
        sel.text = "[url=" + insert_link + "]" + str + "[/url]"; 
      } else { 
        sel.text = "[url]" + insert_link + "[/url]"; 
      }
     }
    return;
   }
  else if ((typeof document.forms[form].elements[field].selectionStart) != 'undefined') // for Mozilla
   {
    var txtarea = document.forms[form].elements[field];
    var selLength = txtarea.textLength;
    var selStart = txtarea.selectionStart;
    var selEnd = txtarea.selectionEnd;
    var oldScrollTop = txtarea.scrollTop;
    var s1 = (txtarea.value).substring(0,selStart);
    var s2 = (txtarea.value).substring(selStart, selEnd);
    var s3 = (txtarea.value).substring(selEnd, selLength);

    var insert_link = prompt(link_target,'http://');
    if(selEnd-selStart==0 && insert_link!='' && insert_link!=null) s2 = prompt(link_text,'');
    if(insert_link && s2!=null)
     {
      if(s2!='') { 
        txtarea.value = s1 + '[url=' + insert_link + ']' + s2 + '[/url]' + s3; 
      } else { 
        txtarea.value = s1 + '[url]' + insert_link + '[/url]' + s3; 
      }
      txtarea.selectionStart = s1.length;
      txtarea.selectionEnd = s1.length + 5 + s2.length + v.length * 2;
      txtarea.scrollTop = oldScrollTop;
      txtarea.focus();
      return;
     }
   }
  else insert('[url=http://www.domain.tld/]Link[/url]');
 }
// ------------------------------------------------------------------------------------
function insert(form,field,what)
 {
  if (document.forms[form].elements[field].createTextRange)
   {
    document.forms[form].elements[field].focus();
    document.selection.createRange().duplicate().text = what;
   }
  else if ((typeof document.forms[form].elements[field].selectionStart) != 'undefined') // fÃ¼r Mozilla
   {
    var tarea = document.forms[form].elements[field];
    var selEnd = tarea.selectionEnd;
    var txtLen = tarea.value.length;
    var txtbefore = tarea.value.substring(0,selEnd);
    var txtafter =  tarea.value.substring(selEnd, txtLen);
    var oldScrollTop = tarea.scrollTop;
    tarea.value = txtbefore + what + txtafter;
    tarea.selectionStart = txtbefore.length + what.length;
    tarea.selectionEnd = txtbefore.length + what.length;
    tarea.scrollTop = oldScrollTop;
    tarea.focus();
   }
  else
   {
    document.forms[form].elements[field].value += what;
    document.forms[form].elements[field].focus();
   }
 }


