// -----------------------------------------------------------------------
//  MUMSYS 2 Multi User Management Interface
//  -----------------------------------------------------------------------
//  script.lib.js
//  -----------------------------------------------------------------------
//  @Version 0.4
//  Created on 01.12.2006
//  @Author Florian Blasel <info@flo-W-orks.com>
//  -----------------------------------------------------------------------
//  @Copyright (c) 2006 by Florian Blasel for FloWorks Company
//  -----------------------------------------------------------------------
//  All rights reseved
//  -----------------------------------------------------------------------
//  DO NOT COPY OR CHANGE ANY KIND OF THIS CODE UNTIL YOU  HAVE HAVE THE
//  WRITTEN/ BRIFLY PERMISSION FROM THE AUTOR, THANK YOU
//  -----------------------------------------------------------------------
function getBrWinW () {
  if (window.innerWidth) {
    return window.innerWidth;
  } else if (document.body && document.body.offsetWidth) {
    return document.body.offsetWidth;
  } else {
    return 1024;
  }
}

function getBrWinH () {
  if (window.innerHeight) {
    return window.innerHeight;
  } else if (document.body && document.body.offsetHeight) {
    return document.body.offsetHeight;
  } else {
    return 768;
  }
}

function getBrWinWH() {
	if (brWinW != getBrWinW() || brWinH != getBrWinH()) {
    	window.history.go(0);
	}
}

if (!window.brWinW && window.innerWidth) {
  window.onresize = getBrWinWH;
  var brWinW = getBrWinW();
  var brWinH = getBrWinH();
}
// ###

var myAgent   = navigator.userAgent.toLowerCase();
var myVersion = parseInt(navigator.appVersion);

var is_ie   = ((myAgent.indexOf("msie") != -1)  && (myAgent.indexOf("opera") == -1));
var is_nav  = ((myAgent.indexOf('mozilla')!=-1) && (myAgent.indexOf('spoofer')==-1)
                && (myAgent.indexOf('compatible') == -1) && (myAgent.indexOf('opera')==-1)
                && (myAgent.indexOf('webtv') ==-1)       && (myAgent.indexOf('hotjava')==-1));
var is_opera= (navigator.userAgent.indexOf("Opera" ) != -1);

var is_win   =  ((myAgent.indexOf("win")!=-1) || (myAgent.indexOf("16bit")!=-1));
var is_mac    = (myAgent.indexOf("mac")!=-1);





// === ex-it ===================================================================
function x() {
	return;
}
// === subonce =================================================================
// === document.formular.submit() onClick=\"subonce(formular);submit()\" -->
function subonce(theform) {
        // if IE 4++ or Netscape 6++
        if (document.all || document.getElementById) {
            // submit or reset
            for (i=0;i<theform.length;i++) {
                var tempobj=theform.elements[i];
                if(tempobj.type.toLowerCase()=="submit"||tempobj.type.toLowerCase()=="reset") {
                       //disable it
                       tempobj.disabled=true;
                       tempobj.style.background = '#FF0000';
                }
            }
        }
}

// =============================================================================
// html bb(code) funcs
// === bbcode tool =============================================================
// return selected text on window, document or form element
function GetTheSelection() {
        if (window.getSelection)
             var item = window.getSelection();
        else if (document.getSelection)
             var item = document.getSelection();
        else if (document.selection)
             var item = document.selection.createRange().text;
        else
             var item = '';
return item;
}

function ManageCursor(formitem, formname) {
        texts =new Array();
        // use!!
        document[ formname ][ formitem ].focus();
        texts[1] = GetTheSelection();
        if ( is_opera || is_nav || myAgent <= 0)
        {
                texts[0] = document[ formname ][ formitem ].value;
                texts[2] = '';
        }
        else
        {
                var sel = document.selection;
                range = sel.createRange();
                range.colapse;

                var sel_before = range.duplicate();
                var sel_after  = range.duplicate();
                range.moveToElementText( document[ formname ][ formitem ] );
//
                sel_before.setEndPoint("StartToStart",range);
                var text_start = sel_before.text;
                var len_start = text_start.length;
//
                sel_after.setEndPoint("EndToEnd",range);
                var text_end = sel_after.text;
                var len_ende = text_end.length;
//
                // slen = selection lenght
                var slen = texts[1].length;

                // TEST
                // alert('\n\nTEST\n start: '+ text_start + '\n selection: '+ texts[1] + '\n end: ' + text_end +'\n slen: '+slen+'\ len_start: '+len_start);;

                if(slen > 0) {
                   texts[0] = text_start.substring(0, len_start - slen);
                   texts[2] = text_end.substring( slen , len_ende);
                } else {
                   texts[0] = text_start;
                   texts[2] = text_end;
                }
        }
return texts;
}

function InsertCode(theCode, formitem, formname, Codeclose) {
         texts = ManageCursor(formitem, formname);
         document[ formname ][ formitem ].value = texts[0] + theCode + texts[1] + Codeclose + texts[2] ;
         //document[ formname ][ formitem ].focus();
}

function putit(theCode, formitem, formname, Codeclose) {
         // <a href="javascript:x();" onmousedown="putit('[code]', 'message', 'theform', '[/code]');">Code</a> |
         if( !formname || formname == '') {
             formname = 'formular';
         }
         if( !Codeclose || Codeclose == '' || Codeclose == undefined) {
             Codeclose = '';
         }
         InsertCode(theCode, formitem, formname, Codeclose);
         //document[ formname ][ formitem ].focus();
}
// === bbcode tool =============================================================

/*
function putit(push, formitem) {
         var push;
         var formitem;
         var revisedMessage;
         var currentMessage = eval('document.formular.' + formitem + '.value');
         revisedMessage = currentMessage + push;
         eval('document.formular.' + formitem + '.value = revisedMessage;');
         //eval('document.formular.' + item + '.value.focus();');
         return;
}
*/
// === bbcode tool =============================================================







// popup
function newwin(url,name,h,w) {
    var winl = (screen.width - w ) / 2;
    var wint = 0; // (screen.height - h) / 2;
    winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars=yes,resizable=yes','directories=no','hotkeys=no'
    win = window.open(url, name, winprops);
    if (parseInt(navigator.appVersion) >= 4) { win.focus(); }
    return win;
}

// popup remote
function remoteWin(url,name,h,w) {
    var xpos = (screen.width -1 - w );
    var ypos = 0; // (screen.height - h) / 2;
    if(h==0||h==undefined) {
        h = screen.availHeight; // screen.height-70;
    }

    winprops = 'height='+h+',width='+w+',top='+ypos+',left='+xpos+',scrollbars=yes,resizable=yes,status=yes','directories=no','hotkeys=no'
    win = window.open(url, name, winprops);
    win.moveTo(xpos,ypos);
    win.resizeTo(w,h);
    win.focus();
    return win;
}



// === morelink ================================================================
// morelink('chk_item','sw');
// <div style="display:none;" id="chk_item">
// <a href="javascript:morelink('newmember','sw');"> txt </b></a>
// <div style="display:none;" id="newmember"> hidden/shown txt </div>
function morelink(item, doit) {
      if(doit != '') {
         morelink_do(item,doit);
      }
/*    // _content , _button
      if (item != '') {   morelink_do(item);  }
      if (id2 != '')  {   morelink_do(id2);   }
*/
}

function moreTabLinks(theid,doit,items) {
	for(var i=0; i< items+1; i++) {
		if( i==theid ) {
        	morelink(theid,'op');
        } else {
			morelink(i,'cl');
        }
	}
}

function moreTabLinkKeys (theid, doit, tabLinkKeys) {
	for(var i=0; i< tabLinkKeys.length; i++) {
		if( theid==tabLinkKeys[i] ) {
        	morelink(theid,'op');
        } else {
			morelink(tabLinkKeys[i],'cl');
        }
	}
}



function morelink_do(theid,doit) {
      var itm = null;
      if (document.getElementById) {
        itm = document.getElementById(theid);
      } else if (document.all){
        itm = document.all[theid];
      } else if (document.layers){
        itm = document.layers[theid];
      }


      if (!itm) {
       // do nothing
      }
      else if (itm.style) {
           if(doit=="sw") {
              if (itm.style.display == "none") {
                  itm.style.display = "";
              } else {
                  itm.style.display = "none";
              }
           }
           if(doit=="op") {
                  itm.style.display = "";
           }
           if(doit=="cl") {
                  itm.style.display = "none";
           }
      }
      else {
         if(doit=="op" || doit=="sw") {
            itm.visibility = "visible";
         } else {
            itm.visibility = "hide";
         }
      }
}



function get_selection_text(formname, selname) {
         var res = null;
         for(i=0; i<document[formname][selname].length; i++) {
           if(document[formname][selname].options[i].selected == true) {
              res = document[formname][selname].options[i].text ;
           }
         }
return res;
}


function selectboxSelectValues(formname, selboxname, values) {
         // alert(values);
         //  <a href="#" onclick="selectboxSelectValues('formname', 'list1', '728,727,713' );">text</a>
         for(i=0; i<document[formname][selboxname].length; i++) {
         	if (values=='none') {
	         	document[formname][selboxname].options[i].selected = false;
	        } else {
	            if( values.match( document[formname][selboxname].options[i].value) || values=='ALL' ) {
	                document[formname][selboxname].options[i].selected = true;
	            } else {
	                document[formname][selboxname].options[i].selected = false;
	            }
	        }
         }
}

// <input type="button" value="   &gt;&gt;   " onclick="selectboxMove(this.form.list1,this.form.list2)"><br>
// <input type="button" value="   &lt;&lt;   " onclick="selectboxMove(this.form.list2,this.form.list1)"><br>
function selectboxMove(frombox,tobox) {
    for(var i=0; i<frombox.options.length; i++) {
        if(frombox.options[i].selected && frombox.options[i].value != "") {
            var no = new Option();
            no.value = frombox.options[i].value;
            no.text = frombox.options[i].text;
            tobox.options[tobox.options.length] = no;
            frombox.options[i].value = "";
            frombox.options[i].text = "";
        }
    }
    selectboxResort(frombox);
}

function selectboxResort(item)  {
    for(var i=0; i<item.options.length; i++) {
        if(item.options[i].value == "")  {
            for(var j=i; j<item.options.length-1; j++)  {
                item.options[j].value = item.options[j+1].value;
                item.options[j].text = item.options[j+1].text;
            }
            var sR = i;
            break;
        }
    }
    if(sR < item.options.length)  {
        item.options.length -= 1;
        selectboxResort(item);
    }
}

function selectboxHandleOption(formname, selboxname, todo, val, txt) {
    //
    //
    elem = eval(document[formname][selboxname]);

	if (typeof(val)=='string') {
		// alert('val is string' + val);
		// list of values
		var arr = val.split(',');
	} else if (typeof(val)=='object') {
	    // alert('val is object' + val);
	    arr = val;
	}

    if( todo=='replace' ) {
        selectboxClear(formname, selboxname);
    }

    for(i=0; i < arr.length; i++) {
        var newopi = new Option();


		if ((typeof(txt)=='string')) {
			// alert('txt is string' + txt);
			x_txt = txt;
		} else if (typeof(txt)=='object' && arr.length == txt.length) {
			// alert('txt is object' + txt);
			x_txt = txt[i];
		} else {
			x_txt = txt;
		}

        newopi.value = arr[i]; // elem.options[i].value;
        if(arr.length > 1) {
            newopi.text = x_txt +' ('+arr[i]+')';  // frombox.options[i].text;
        } else {
            if( txt > '' ) {
                newopi.text = x_txt +' ('+arr[i]+')';  // frombox.options[i].text;
            } else {
                newopi.text = x_txt +' ('+arr[i]+')';
            }
        }

        newopi.selected = true;
        if( todo=='add' ) {
            elem.options[elem.options.length] = newopi;
        }
        if( todo=='replace' ) {
            elem.options[i] = newopi;
        }

    }   // end for
    // alert('val:'+val+', txt:'+txt);

    for(var i=0; i < elem.options.length; i++) {
        if( elem.options[i].value != '' ) {
            elem.options[i].selected = true;
        }
    }
}
function selectboxClear(formname, selboxname) {
    delo = eval(document[formname][selboxname]);
    num = delo.options.length;
    for(i=num; i>0;i--) {
        delo.options[i] = null;
    }
    delo.options[0] = null;
    // delo.options[0].text='';
    return true;
}


function pushValues(formname,elems) {
    var arr = elems.split('||');
    for(i=0; i < arr.length; i++) {
        document[ formname ][''+ arr[i] +''].value = arr[(i+1)];
        // alert(' i:'+ i +'\n arr[i]'+ arr[i] +'\n '+ arr[i+1]);
        i++;
    }

}

///
var filecount = 0;
// prüfen, ob alle Input-Felder bereits belegt sind
function check_file_inputs() {
  for (cnt=0; cnt < filecount; cnt++) {
    if (document.getElementById('fileId'+cnt).value.length == 0) return false;
  }
  return true;
}

function insert_file_input(elem) {
    var fx = document.getElementById(elem);

    var tr  = document.createElement("tr");
    var td   = document.createElement("td");
    var inp  = document.createElement("input");
    inp.size = 45;
    //inp.maxlength = 80;
    inp.type = 'file';
    inp.name = 'files[]';
    inp.id   = 'fileId' + filecount;
    inp.className = 'submit';
    inp.onchange = function() {
                    if( check_file_inputs() ) {
                        insert_file_input(elem);
                    };
                }
    //inp.onchange = function() {showImage(this.id);};
    //inp.ondblclick = function() {showImage(this.id);};
    td.appendChild(inp);
    tr.appendChild(td);
    fx.appendChild(tr);
    filecount++;
}

var passwndminlen = 8;
function mkpasswd(cnt) {
	if(cnt == undefined || cnt == 0 || cnt == false) {
		cnt = passwndminlen;
	}
	pass = "";
	chars = new Array('1','2','3','4','5','6','7','8','9','0','a','A','b','B','c','C','d','D','e',
	            'E','f','F','g','G','h','H','i','I','j','J','k','K','l','L','m','M','n','N',
	        	'o','O','p','P','q','Q','r','R','s','S','t','T','u','U','v','V','w','W','x',
	        	'X','y','Y','z','Z');
	count = chars.length;
	for(i=0;i<cnt;i++) {
		r=Math.floor((count)*Math.random());
		pass += chars[r];
	}
	//alert(pass);
	return(pass);
}

function CheckboxCheck(what, field) {
	// what = none|all
	fieldcnt = document.getElementsByName(field).length;
	for (cnt=0; cnt < fieldcnt; cnt++) {
		if(what=='all') {
			document.getElementsByName(field)[cnt].checked = true;
		}
		if(what=='none') {
			document.getElementsByName(field)[cnt].checked = false;
		}
		if(what=='toggle') {
			if(document.getElementsByName(field)[cnt].checked) {
				document.getElementsByName(field)[cnt].checked = false;
			} else {
				document.getElementsByName(field)[cnt].checked = true;
			}
		}
	}
}


function addLeadingZero(elems, lead, condition) {
	var r = new Array();
	for (var p in elems) {
		if (String(elems[p]).length < condition) {
			r[p] = lead+''+String(elems[p]);
		} else {
			r[p] = String(elems[p]);
		}
	}
	return r;
};

function getNow(format) {

	var oD = new Date();
	var op = new Array();
  	op["y"] = oD.getFullYear();
  	op["m"] = oD.getMonth()+1;
  	op["d"] = oD.getDate();
  	op["h"] = oD.getHours();
  	op["i"] = oD.getMinutes();
	op["s"] = oD.getSeconds();
	//alert(op["m"]);
	switch(format) {
		case 'time':
			for (var p in op) {
				if (String(op[p]).length < 2) {
					op[p] = '0'+String(op[p]);
				} else {
					op[p] = String(op[p]);
				}
			}
			return (op["h"]+':'+op["i"]+':'+op["s"]);
		break;
		case 'mysql':
		default:
			// addLeadingZero(elems, lead, condition)
			for (var p in op) {
				if (String(op[p]).length < 2) {
					op[p] = '0'+String(op[p]);
				} else {
					op[p] = String(op[p]);
				}
			}
			return (op["y"] +'-'+op["m"]+'-'+op["d"]+' '+op["h"]+':'+op["i"]+':'+op["s"]);
		break;
	}
};

/**
 * DataList js helper
 * Add extra search to the search form
 */
function wDLaddSearch() {
    var tableObj = document.getElementById('wDLsearchTable');
    var trObj    = document.getElementById('wDLsearchRow');
    var lastRow  = document.getElementById('wDLsearchlastRow');

    // add row
    var newRow = lastRow.parentNode.insertBefore(trObj.cloneNode(true), lastRow);

    // rm the more-link and submit link from the latest row
    var objLinkMore = document.getElementById('wDLsearchLinkMore');
    var objLinkSubmit = document.getElementById('wDLsearchLinkSubmit');
    objLinkMore.parentNode.removeChild(objLinkMore);
    objLinkSubmit.parentNode.removeChild(objLinkSubmit);

    trObj.id = '';
    newRow.id = 'wDLsearchRow';

    // Reset values of the new row
    inputs = newRow.getElementsByTagName('input');
    inputs[0].value = '';
    selects = newRow.getElementsByTagName('select');
    selects[0].selectedIndex = 0;
    selects[1].selectedIndex = 0;

    return false;
}
function wDLrmSearch(n) {
	var o = document.getElementById('wDLsearchTable').getElementsByTagName('tr')[n];
	r =	document.getElementById('wDLsearchTable').getElementsByTagName('tr')[n].parentNode.removeChild(o);
}
