/* Common Javascritps for module */

/* to detect changes in editmode, changed by onChange event */
var changed = 0;
var activetab = 0;
var ms = false; //maysave
var oncancel = false;

/* onUnload with unsaved changes */
function savechanges(theform,message,changed){
	if (theform){
		if (theform.elements){
			hidsav = theform.elements['hidsav' + moduleid];
			if (ms && !oncancel) {
			 	if(changed && hidsav.value==0){
			        if(window.confirm(message)){
						if(checkform(theform)==true){
							hidsav.value=1;
							theform.submit();
						}else{
						    hidsav.value=2;        //not saved because hidsav<moduleid>!=1 but values will not be lost (fillcomponents in databasemanager checks for hidsav<moduleid> > 0)
						    theform.submit();
						}
					}
				}
			}
		}
	}
}

/* to confirm delete command */
function delconfirm(theform,askdelitem,uri){
    if(confirm(askdelitem)){
		if(theform){
            hidsav = theform.elements['hidsav' + moduleid];
		  	hidsav.value=1;
  		}
		location.href=uri;
	}
}

var fld;

/* standard requiredfield check */
function requiredfield(field,message,skip,nomessage,lang,canhavefocus){
	var undefined;
	fld = field;

	if(field != undefined){
	
		if(field.value.trim() == ""){
			if (lang != undefined && lang != false) { comptitle = field.title + ' (' + lang + ')';}else{comptitle = field.title;}
			if (!nomessage) window.alert('"' + comptitle + '" ' + message);
			if(!skip){
				objcollection = document.getElementsByTagName('div');
				for(i=0;i<=objcollection.length;i++) {
					if (objcollection[i]) {
						if (objcollection[i].id) {
							if (objcollection[i].id.substr(0,4) == "tab_") {    //get tab divs
								if(objcollection[i].innerHTML.indexOf(field.id) != -1){
									divnum = objcollection[i].id.substr(4); 	//tab_id
									changetab(divnum);      					//make tab active
									if (canhavefocus){
										setTimeout('fld.focus()',250);				//focus required field
									}
								}
							}
						}
					}
				}
			}
			return false;
		}
	
	}
	return true;
}
function onereqcheck() {
	var result = false;
	f2check = arguments[0];
	for(var i=1; i<arguments.length; i++) {

		if (f2check(arguments[i],undefined,true,true) == true) {
			result = true;
		}
	}
	if (!result) {
		f2check(arguments[((activetab * 1) + 1)],undefined,false,false);
		return false;
	} else {
		return true;
	}
}

function checkim2mNoAlert(field) {
	var undefined;
	if (field != undefined) {
		multipleselect = new Array();
		objcollection = document.getElementsByTagName("input");
		for(i=0;i<objcollection.length;i++){
			if (objcollection[i].type == "checkbox") {
				if (objcollection[i].name.indexOf(field) > -1) {
					multipleselect[multipleselect.length] = objcollection[i];
				}
			}
		}
		for(i=0;i<multipleselect.length;i++) {
			if (multipleselect[i].checked == true) { return true;}
		}
	}
	
	return false;
}

function checkim2m(field,message,lang) {
	var undefined;
	if (field != undefined) {
		multipleselect = new Array();
		objcollection = document.getElementsByTagName("input");
		for(i=0;i<objcollection.length;i++){
			if (objcollection[i].type == "checkbox") {
				if (objcollection[i].name.indexOf(field) > -1) {
					multipleselect[multipleselect.length] = objcollection[i];
				}
			}
		}
		for(i=0;i<multipleselect.length;i++) {
			if (multipleselect[i].checked == true) { return true;}
		}
	}
	window.alert(printf(message,['"' + multipleselect[0].title + '(' + lang + ')' + '"']));
	return false;
}

function checkradiobuttons(field, message, lang, fieldname){
	var undefined;

	if (field.length == undefined){ //1 radio button
		if (field.checked){return true;}
	} else {	//meerdere buttons
		for(i=0;i<field.length;i++){
			objNode = field.item(i);
			
			if (objNode.checked){return true;}
		}
	}
	
	if (lang != undefined && lang != false) { comptitle = fieldname + ' (' + lang + ')';}else{comptitle = field.title;}	
	window.alert(printf(message,['"' + comptitle + '"']));
	return false;
}

/* for changing active tab in display manager  */
function changetab(tabid){
	var undefined,checkok, buttons;
	buttons = document.getElementsByTagName('img');     				//try images

	for(i=0;i<buttons.length;i++) {
	  	if(buttons[i].className == 'inactivetab')checkok = 1;
	}

	if(checkok != 1)
		buttons = document.getElementsByTagName('button');  			//try buttons
	else{       //init images
		if(buttons[0].inactiveimage == undefined){
	        for(i=0;i<buttons.length;i++) {
				if(buttons[i].src){
					buttons[i].inactiveimage = buttons[i].src;
					buttons[i].activeimage = buttons[i].inactiveimage.replace('.gif','_over.gif');
				}
			}
		}
	}

	for(i=0;i<buttons.length;i++) {
	  	if(buttons[i].className == 'inactivetab')checkok = 1;
	}

	if(checkok != 1)buttons = document.getElementsByTagName('input');   //try inputs

	for(i=0;i<buttons.length;i++) {
	  	if(buttons[i].className == 'inactivetab')checkok = 1;
	}

	if(checkok == 1){
		for(i=0;i<buttons.length;i++) {
            if(buttons[i].className == 'activetab'){
				buttons[i].className = 'inactivetab';
				if(buttons[i].inactiveimage) buttons[i].src = buttons[i].inactiveimage;
			}
			if(buttons[i].id == '_tab'+tabid){
			    buttons[i].className = 'activetab';
			    if(buttons[i].activeimage) buttons[i].src = buttons[i].activeimage;
			}
		}
	}

	var objcollection = document.getElementsByTagName('div');
	for(i=0;i<=objcollection.length;i++) {
	    if (objcollection[i]) {
			if (objcollection[i].id) {
		        if (objcollection[i].id.substr(0,4) == "tab_") {
		            objcollection[i].style.display='none';
		        }
			}
	    }
	}
	document.getElementById('tab_'+tabid).style.display='inline';

    //execute functions for this tab
	try{
        if(tabfunctions[tabid]){
            for(key in tabfunctions[tabid]){
                tabfunctions[tabid][key]();
            }
        }
    }catch(e){};

	activetab = tabid;
}

/* get next index for adding a tabfunction at tab with given id*/
function getnextindex(id){
	if(tabfunctions[id]){
	    return tabfunctions[id].length;
	}else{
		tabfunctions[id] = new Array();
	    return 0;
	}
}
/* function to provide text caharacter counter for use with memobox and textbox */
function textCounter(field, countfield, maxlimit) {
	if (field.value.length > maxlimit) // if too long...trim it!
		field.value = field.value.substring(0, maxlimit);
	// otherwise, update 'characters left' counter
	else 
		countfield.innerHTML = maxlimit - field.value.length;
}
/* mouse over SerialNumber selectlist (to disable onclick of the TR) */
function _SNmouseover(selobj){
    var undefined,objcol = document.getElementsByTagName('tr');
	for(i=0;i<objcol.length;i++){
	  	if( (objcol[i].className.indexOf('evenrow') != -1) || (objcol[i].className == 'rowover') ){   //unevenrow and evenrow and rowover
			if(objcol[i].oldonclick==undefined) objcol[i].oldonclick = objcol[i].onclick;
			objcol[i].onclick = '';
		}
	}
	if(selobj!=undefined){if(selobj.oldvalue==undefined)selobj.oldvalue = selobj.value;}
}
/* mouse out SerialNumber selectlist (back enable the onclick of TR)*/
function _SNmouseout(selobj){
    var undefined,objcol = document.getElementsByTagName('tr');
	for(i=0;i<objcol.length;i++){
	  	if( (objcol[i].className.indexOf('evenrow') != -1) || (objcol[i].className == 'rowover')){   //unevenrow and evenrow and rowover
			objcol[i].onclick = objcol[i].oldonclick;
		}
	}
	if(selobj!=undefined){if(selobj.oldvalue!=undefined)selobj.value = selobj.oldvalue;}
}

/* onchange SerialNumber selectlist */
function _SNonchange(val,oldval){
	var pos,url,snrpart;
    _SNmouseover();
    url = location.href;
    if(url.indexOf('snr=') != -1){
        snrpart = url.substr(url.indexOf('snr='));      									//get part from position of 'snr='
		if(snrpart.indexOf('&',snrpart.indexOf('oldsnr')) != -1)
			snrpart = snrpart.substr(0,snrpart.indexOf('&',snrpart.indexOf('oldsnr')));		//if more then only 'snr=...&oldsnr=...': strip it
		url = url.replace(snrpart,'snr=' + val + '&oldsnr=' + oldval);        				//replace snrpart with new snr and oldsnr
    }else{
        url = url + '&snr=' + val + '&oldsnr=' + oldval;
	}
	location.href = url; //redirect
}

function in_array(arr,value) {
	for(var i in arr) {
		if (arr[i] == value) {
			return true;
		}
	}
	return false;
} 

function eventOnClickItem(e, name){
	if (!e) var e = window.event;
	if (window.onCheckItem){
		onCheckItem(e, name);
	}
}

function buildMultiselects(){
var arr_ms = new Array();
 do{
  found=0;
  a=document.getElementsByTagName('select');
  for(b=0;b<a.length,!found;b++){
   var ms=a[b];
   if(ms==null)break;
	width=ms.offsetWidth;
    height=ms.offsetHeight;
   if(ms.name.substring(ms.name.length-2,ms.name.length)=='[]' && (!in_array(arr_ms,ms.name)) && width > 0 && height > 0){
   //if (ms.multiple) {
    found=1;
	arr_ms[arr_ms.length] = ms.name;
    disabled=(ms.disabled)?1:0;
    el=document.createElement('div');
	el.className='multiselect';
    el.style.overflow='auto';
    el.style.width=width+"px";
    el.style.height=height+"px";
    c=ms.getElementsByTagName('option');
    for(d=0;d<c.length;d++){
     el2=document.createElement('span');
	 if ((d % 2) == 0) {el2.className = 'oneven';} else {el2.className = 'even';}
     el2.style.display="block";
     el2.style.lineHeight="10px";
     el2.style.paddingLeft="17px";
     el2.style.paddingTop="2px";
     el3=document.createElement('input');
	 el3.selectList=ms.id;
	 //el3.onclick = function (e) {eventOnClickItem(e, ms.name);}
	 el3.onclick = eventOnClickItem;
	 if (el3.captureEvents) el3.captureEvents(Event.CLICK);
     el3.type="checkbox";
	 el3.id=ms.title + d;
	 el3.title=ms.title;
     if(c[d].selected){
      el3.checked="checked";
      el3.defaultChecked=true;
     }
     if(disabled)el3.disabled="disabled";
     label=document.createElement('label');
     label.value = c[d].value
     el3.value=c[d].value;
     el3.style.marginLeft="-16px";
     el3.style.marginTop="-2px";
     el3.name=ms.name;
	 label.htmlFor=el3.id;
     el4=document.createTextNode(c[d].innerHTML);
     label.innerHTML = c[d].innerHTML;
	 el2.appendChild(el3);
     el2.appendChild(label);
     el.appendChild(el2);
    }
    ms.parentNode.insertBefore(el,ms);
    ms.parentNode.removeChild(ms);
   }
  }
 }while(found);
}

function multipleselectall(compid){
	multipleselect = document.getElementById(compid);
	if (multipleselect) {
		for(i=0;i < multipleselect.length;i++){
			multipleselect.options[i].selected=true;
		}
	} else {
		multipleselect = new Array();
		objcollection = document.getElementsByTagName("input");
		for(i=0;i<objcollection.length;i++){
			if (objcollection[i].type == "checkbox") {
				if (objcollection[i].name.indexOf(compid) > -1) {
					multipleselect[multipleselect.length] = objcollection[i];
				}
			}
		}
		for(i=0;i<multipleselect.length;i++) {
			multipleselect[i].checked = true;
		}
	}
}

function multipledeselectall(compid){
	multipleselect = document.getElementById(compid);
	if (multipleselect) {
		for(i=0;i < multipleselect.length;i++){
			multipleselect.options[i].selected=false;
		}
	} else {
		multipleselect = new Array();
		objcollection = document.getElementsByTagName("input");
		for(i=0;i<objcollection.length;i++){
			if (objcollection[i].type == "checkbox") {
				if (objcollection[i].name.indexOf(compid) > -1) {
					multipleselect[multipleselect.length] = objcollection[i];
				}
			}
		}
		for(i=0;i<multipleselect.length;i++) {
			multipleselect[i].checked = false;
		}
	}
}
function printf(S, L) {
	var nS = "";
	var tS = S.split("%s");
	if (tS.length != L.length+1) throw "Input error";

	for(var i=0; i<L.length; i++)
		nS += tS[i] + L[i];
	return nS + tS[tS.length-1];
}