/* ***************************************************
 * Main JavaScript File
 * 
 * viele kleine js-Dateien kosten Performance beim laden
 *****************************************************/

function setFocus(id)
{
	var obj = document.getElementById(id);
		if(obj!=null)
		{
		obj.focus();
		}
}

function setSubmitEnterKey(submitelement)
{

 if (e.KeyCode == 13) {
 	
 	var obj = document.getElementById(submitelement)
 	if (obj != null) 
 		obj.click();
 }

}

function extendedsearchkeyup(e)
{
	
	
	 if (e.which == 13) {
 	
 	var obj = document.getElementById('searchtypeadvertisment');
 	if (obj != null) 
 		obj.click();
 }
}

function indexsearchkeyup(e)
{
	//not working hidden field is not set
//	 	var isblocked = false;
// for(var i=0;i<dhx_glbSelectAr.length;i++)
// if(dhx_glbSelectAr[i].DOMlist.style.display=="block"){
//isblocked = true;
// 
//}
//if(isblocked)
//return false;
//
//	
//	
//	var keycode = e.keyCode
//	//mozilla browsers
//	if(keycode=='undefined')
//	{
//		keycode = e.which
//	}
//	 if (keycode == 13) {
// 	
// 	var obj = document.getElementById('searchform');
//		
//		
//		if (obj != null) 
//			obj.submit();
// }
}

function showDivs(ids)
{
    if(!isArray(ids))
		ids = new Array(ids);
		
	for (var i=0; i<ids.length; i++)
	{
		var obj = document.getElementById(ids[i]);
		if(obj!=null)
		{
			obj.style.display = "block";
		}
	};
}

function hideDivs(ids)
{
    if(!isArray(ids))
		ids = new Array(ids);
		
	for (var i=0; i<ids.length; i++)
	{
		var obj = document.getElementById(ids[i]);
		if(obj!=null)
		{
			obj.style.display = "none";
		}
	};
}


function toggleDiv(ids)
{
	if(!isArray(ids))
		ids = new Array(ids);
	for (var i=0; i<ids.length; i++)
	{
		var obj = document.getElementById(ids[i]);
		if(obj!=null)
		{
			if (obj.style.display == "block")
			{
				obj.style.display = "none";
			}
			else
			{
				obj.style.display = "block";
			}
		}
	};
}

function toggleElementByClass(names)
{
	if(!isArray(names))
		names = new Array(names);
	for (var i=0; i<names.length; i++)
	{
		var objs = document.getElementsByClassName(names[i]);
		if(objs!=null)
			for(var j=0; j<objs.length; j++)
			{
				if (objs[j].style.display == "block")
				{
					objs[j].style.display = "none";
				}
				else
				{
					objs[j].style.display = "block";
				}
			}
	};
}

function getElementsByClassName(classname, node) {
	if(!node) node = document.getElementsByTagName("body")[0];
	var a = [];
	var re = new RegExp('\\b' + classname + '\\b');
	var els = node.getElementsByTagName("*");
	for(var i=0,j=els.length; i<j; i++)
		if(re.test(els[i].className))a.push(els[i]);
	return a;
}

function isArray(obj) {
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
}

/* ********************************************************
 * ajaxbasics
 **********************************************************/

var httphandler = null;
var textarray = new Array();

function createXMLHttp() {
	var retVal = null;
	try {
	    return new XMLHttpRequest();
	
    } catch(e)
    {
    	if (window.ActiveXObject) {
	        var avers = new Array("Microsoft.XmlHttp", "MSXML2.XmlHttp", "MSXML2.XmlHttp.3.0", "MSXML2.XmlHttp.4.0", "MSXML2.XmlHttp.5.0");
	        for (var i = 0; i<avers.length; i++) {
	            try {
	                var httpObj = new ActiveXObject(avers[i]);
	                return httpObj;
	            } catch(e) {}
	        }
    	}
    }
    throw new Error('XMLHttp (AJAX) not supported');
}

/* ***********************************************************
 * searchresultnotice
*********************************************************** */

function RememberSearchStart()
{
	var userid = document.getElementById('userID').value;
	if (userid == null || userid=="" || !userid.toString().match(/^[-]?\d*\.?\d*$/))
	{
		alert(unescape("Nur f%FCr registrierte Nutzer. Bitte melden Sie sich an.")); 
	} else {
		var infodiv = document.getElementById('remembersearchinfo');
		infodiv.style.display = 'block';
	}
}

function RememberSearchSave()
{
	httphandler = createXMLHttp();
    if(httphandler)
    {
		var title = document.getElementById('remembertitle').value;
		var loginid = document.getElementById('loginID').value;
		var session = document.getElementById('session').value;
		var searchtype = document.getElementById('searchtype').value;
		var searchterm = document.getElementById('searchterm').value;
		var searchtermprocessed = document.getElementById('searchtermprocessed').value;
		var searchlocality = document.getElementById('searchlocality').value;
		var searchactuality = document.getElementById('searchactuality').value;
		var abo = document.getElementById('rememberabo').checked?1:0;
		var path = document.getElementById('baseurl').value+'/store/remembersearch/loginid/'+loginid+'/title/'+escape(title)+'/ses/'+escape(session)+'/styp/'+escape(searchtype)+'/sterm/'+escape(searchterm)+'/stermp/'+escape(searchtermprocessed)+'/sloc/'+escape(searchlocality)+'/sact/'+escape(searchactuality)+'/abo/'+abo+'/type/ajax';
		var infodiv = document.getElementById('remembersearchinfo');
        if (infodiv.hasChildNodes())
        {
            while ( infodiv.childNodes.length >= 1 )
            {
                infodiv.removeChild( infodiv.firstChild );
            }
        };
        var wait = document.createElement('IMG');
        wait.src = document.getElementById('baseurl').value+'/statics/img/loading.gif';
        infodiv.appendChild(wait);
		var msg = document.createTextNode('Bitte warten, Suche wird gespeichert.');
		infodiv.appendChild(msg);
		
        httphandler.open('GET', path, true);
        httphandler.onreadystatechange = RememberSearchStatusOutput;
        httphandler.send(null);
    };
}

function SendNoticeToServer(jobid, jobtitle)
{
	httphandler = createXMLHttp();
    if(httphandler)
    {
		var title = document.getElementById('noticetitle');
		title.value = jobtitle;
		var noticeid = document.getElementById('noticeid');
		noticeid.value = jobid;
		var userid = document.getElementById('userID').value;
		var path = document.getElementById('baseurl').value+'/store/rememberadvertisment/userid/'+userid+'/id/'+jobid+'/type/ajax';
        httphandler.open('GET', path, true);
        httphandler.onreadystatechange = NoticeStatusOutput;
        httphandler.send(null);
    };
}

function SendNoticeProfileToServer(profileid, profiletitle)
{
	var userid = document.getElementById('userID').value;
	if (userid == null || userid=="" || !userid.toString().match(/^[-]?\d*\.?\d*$/))
	{
		alert(unescape("Sie m%FCssen eingeloggt sein%2C um diese Funktion nutzen zu k%F6nnen.")); 
	} else {
		/*var infodiv = document.getElementById('noticeinfo');
        var wait = document.createElement('IMG');
        wait.src = document.getElementById('baseurl').value+'/statics/img/loading.gif';
        infodiv.appendChild(wait);
		var msg = document.createTextNode('Bitte warten, Eintrag wird auf Ihre Merkliste geschrieben.');
		infodiv.appendChild(msg);
		infodiv.style.display = 'block';*/
		
		httphandler = createXMLHttp();
	    if(httphandler)
	    {
			var title = document.getElementById('noticetitle');
			title.value = profiletitle;
			var noticeid = document.getElementById('noticeid');
			noticeid.value = profileid;
			var userid = document.getElementById('userID').value;
			var path = document.getElementById('baseurl').value+'/store/rememberseekerprofile/userid/'+userid+'/id/'+profileid+'/type/ajax';
	        httphandler.open('GET', path, true);
	        httphandler.onreadystatechange = NoticeStatusOutput;
	        httphandler.send(null);
	    };
	}
}

function NoticeStatusOutput()
{
	if(httphandler)
	{
		if(httphandler.readyState==4)
		{
			var resulttext = '';
			var title = document.getElementById('noticetitle');
			var noticeid = document.getElementById('noticeid');
			switch(httphandler.responseText)
			{
				case '1':
					
					resulttext = 'Der Eintrag wurde Ihrem Merkzettel hinzugefügt.';
					break;
				case '0':
					resulttext = 'Dieser Eintrag befindet sich bereits in Ihrem Merkzettel.';
					break;
				case '-1':
					resulttext = 'Fehler beim Beschreiben der Datenbank aufgetreten. Merkposten konnte nicht gespeichert werden.';
					break;
				case '-9':
					resulttext = 'Unbekantter Fehler aufgetreten. Merkposten konnte nicht gespeichert werden.';
					break;
				default:
					resulttext = 'Kein Rückgabewert erkannt.';
					break;
			};
		    /*var noticediv = document.getElementById('noticeinfo');
	        if (noticediv.hasChildNodes())
	        {
	            while ( noticediv.childNodes.length >= 1 )
	            {
	                noticediv.removeChild( noticediv.firstChild );
	            }
	        };
			noticediv.appendChild(document.createTextNode(resulttext));
			noticediv.style.display = 'block';*/
		    //alert('noticeinfo_'+noticeid.value);
			var noticediv = document.getElementById('noticeinfo_'+noticeid.value);
	        if (noticediv.hasChildNodes())
	        {
	            while ( noticediv.childNodes.length >= 1 )
	            {
	                noticediv.removeChild( noticediv.firstChild );
	            }
	        };
			noticediv.appendChild(document.createTextNode(resulttext));
			noticediv.style.display = 'block';
		}
	}
}

function RememberSearchStatusOutput()
{
	if(httphandler)
	{
		if(httphandler.readyState==4)
		{
			var resulttext = '';
			switch(httphandler.responseText)
			{
				case '1':
					var title = document.getElementById('noticetitle');
					resulttext = 'Die Suchanfrage wurde gespeichert.';
					break;
				case '-1':
					resulttext = 'Fehler beim Beschreiben der Datenbank aufgetreten. Merkposten konnte nicht gespeichert werden.';
					break;
				default:
					resulttext = 'Kein Rückgabewert erkannt.';
					break;
			};
			var infodiv = document.getElementById('remembersearchinfo');
            if (infodiv.hasChildNodes())
            {
                while ( infodiv.childNodes.length >= 1 )
                {
                    infodiv.removeChild( infodiv.firstChild );
                }
            };
			var msg = document.createTextNode(unescape(resulttext));
			infodiv.appendChild(msg);
			//var link = document.createElement('A');
			//link.setAttribute('href', document.getElementById('baseurl').value+'/store/rememberedsearchlist');
			//link.appendChild(document.createTextNode('zur Liste meiner gemerkten Suchen'));
			//infodiv.appendChild(link);
			infodiv.appendChild(document.createElement('BR'));
			var div = document.createElement('DIV');
			var inp = document.createElement('INPUT');
			inp.type = 'button';
			inp.value = unescape("schlie%DFen");
			inp.onclick = function() {document.getElementById('remembersearchinfo').style.display = 'none'; };
			div.appendChild(inp);
			infodiv.appendChild(div);
		}
	}
}

/* *********************************************************
 * storecontroller
 ************************************************************ */

var lastdeletedid = -1;
var lastdeleteteablename = "";
var lasttoogledid = -1;

function DeleteRememberedSearch(deleteid,tablename)
{
	httphandler = createXMLHttp();
    if(httphandler)
    {
		var loginid = document.getElementById('loginID').value;
		var userid = document.getElementById('userID').value;
		var session = document.getElementById('session').value;
		var path = document.getElementById('baseurl').value+'/store/deleterememberedsearch/id/'+deleteid+'/loginid/'+loginid+'/ses/'+session+'/tablename/'+tablename+'/type/ajax';
		var infodiv = document.getElementById('workinginfo');
		infodiv.style.display = 'block';
        if (infodiv.hasChildNodes())
        {
            while ( infodiv.childNodes.length >= 1 )
            {
                infodiv.removeChild( infodiv.firstChild );
            }
        };
        var wait = document.createElement('IMG');
        wait.src = document.getElementById('baseurl').value+'/statics/img/loading.gif';
        infodiv.appendChild(wait);
		var msg = document.createTextNode(unescape('Bitte warten, Eintrag wird gel%F6scht.'));
		infodiv.appendChild(msg);
		lastdeletedid = deleteid;
		lastdeleteteablename = tablename;
        httphandler.open('GET', path, true);
        httphandler.onreadystatechange = DeleteRememberedSearchStatusOutput;
        httphandler.send(null);
    };
}

function DeleteRememberedSearchStatusOutput()
{
	if(httphandler)
	{
		if(httphandler.readyState==4)
		{
			var resulttext = '';
			switch(httphandler.responseText)
			{
				case '1':
					resulttext = '';
					document.getElementById('workinginfo').style.display = 'none';
					var row = document.getElementById(lastdeleteteablename+'row'+lastdeletedid);
					if(row!=null)
						row.style.display = 'none';
					break;
				case '-1':
					resulttext = 'Fehler beim Beschreiben der Datenbank aufgetreten. Merkposten konnte nicht gespeichert werden.';
					break;
				default:
					resulttext = 'Kein Rückgabewert erkannt.';
					break;
			};
			if(resulttext!='')
			{
				var infodiv = document.getElementById('workinginfo');
	            if (infodiv.hasChildNodes())
	            {
	                while ( infodiv.childNodes.length >= 1 )
	                {
	                    infodiv.removeChild( infodiv.firstChild );
	                }
	            };
				var msg = document.createTextNode(unescape(resulttext));
				infodiv.appendChild(msg);
				var inp = document.createElement('INPUT');
				inp.type = 'button';
				inp.value = unescape("schlie%DFen");
				inp.onclick = function() {document.getElementById('workinginfo').style.display = 'none'; };
				infodiv.appendChild(inp);
			}
		}
	}
}



function ToogleAboRememberedSearch(toogleid)
{
	httphandler = createXMLHttp();
    if(httphandler)
    {
		var loginid = document.getElementById('loginID').value;
		var userid = document.getElementById('userID').value;
		var session = document.getElementById('session').value;
		var status = document.getElementById('tooglestatus'+toogleid).value;
		status = (status=='1'?'0':'1');
		var path = document.getElementById('baseurl').value+'/store/switchaborememberedsearch/id/'+toogleid+'/stat/'+status+'/loginid/'+loginid+'/ses/'+session+'/type/ajax';
		var infodiv = document.getElementById('workinginfo');
		infodiv.style.display = 'block';
        if (infodiv.hasChildNodes())
        {
            while ( infodiv.childNodes.length >= 1 )
            {
                infodiv.removeChild( infodiv.firstChild );
            }
        };
        var wait = document.createElement('IMG');
        wait.src = document.getElementById('baseurl').value+'/statics/img/loading.gif';
        infodiv.appendChild(wait);
		var msg = document.createTextNode(unescape('Bitte warten, Status des E-Mail-Abos wird neu gesetzt.'));
		infodiv.appendChild(msg);
		lasttoogledid = toogleid;
        httphandler.open('GET', path, true);
        httphandler.onreadystatechange = ToogleAboRememberedSearchStatusOutput;
        httphandler.send(null);
    };
}

function ToogleAboRememberedSearchStatusOutput()
{
	if(httphandler)
	{
		if(httphandler.readyState==4)
		{
			var resulttext = '';
			switch(httphandler.responseText)
			{
				case '1':
				case '0':
					resulttext = '';
					document.getElementById('workinginfo').style.display = 'none';
					var columnabo = document.getElementById('columnabo'+lasttoogledid);
	                while ( columnabo.childNodes.length >= 1 )
	                {
	                    columnabo.removeChild( columnabo.firstChild );
	                }
					columnabo.appendChild(document.createTextNode(httphandler.responseText=='1'?'Abo':''));

					document.getElementById('tooglestatus'+lasttoogledid).value = httphandler.responseText;
					//columnabo.innerHTML = 'drin';
					break;
				case '-1':
					resulttext = 'Fehler beim Beschreiben der Datenbank aufgetreten. Merkposten konnte nicht gespeichert werden.';
					break;
				default:
					resulttext = 'Kein Rückgabewert erkannt.';
					break;
			};
			if(resulttext!='')
			{
				var infodiv = document.getElementById('workinginfo');
	            if (infodiv.hasChildNodes())
	            {
	                while ( infodiv.childNodes.length >= 1 )
	                {
	                    infodiv.removeChild( infodiv.firstChild );
	                }
	            };
				var msg = document.createTextNode(unescape(resulttext));
				infodiv.appendChild(msg);
				var inp = document.createElement('INPUT');
				inp.type = 'button';
				inp.value = unescape("schlie%DFen");
				inp.onclick = function() {document.getElementById('workinginfo').style.display = 'none'; };
				infodiv.appendChild(inp);
			}
		}
	}
}

/* *************************************************************
 * Employer Controller
 ***************************************************************/
var lastadvertismentdeactivateid = -1;

function AdvertismentDeactivate(jobid)
{
	httphandler = createXMLHttp();
    if(httphandler)
    {
		var loginid = document.getElementById('loginID').value;
		var session = document.getElementById('session').value;
		var path = document.getElementById('baseurl').value+'/employer/advertismentdeactivate/id/'+jobid+'/loginid/'+loginid+'/ses/'+session+'/type/ajax';
		var infodiv = document.getElementById('workinginfo');
		infodiv.style.display = 'block';
        if (infodiv.hasChildNodes())
        {
            while ( infodiv.childNodes.length >= 1 )
            {
                infodiv.removeChild( infodiv.firstChild );
            }
        };
        var wait = document.createElement('IMG');
        wait.src = document.getElementById('baseurl').value+'/statics/img/loading.gif';
        infodiv.appendChild(wait);
		var msg = document.createTextNode(unescape('Bitte warten, Eintrag wird deaktiviert.'));
		infodiv.appendChild(msg);
		lastadvertismentdeactivateid = jobid;
		
        httphandler.open('GET', path, true);
        httphandler.onreadystatechange = AdvertismentDeactivateStatusOutput;
        httphandler.send(null);
    };
}

function AdvertismentDeactivateStatusOutput()
{
	if(httphandler)
	{
		if(httphandler.readyState==4)
		{
			var resulttext = '';
			if(httphandler.responseText==lastadvertismentdeactivateid)
			{
					resulttext = '';
					document.getElementById('workinginfo').style.display = 'none';
					document.getElementById('selectorform').submit();
			} else {
				switch(httphandler.responseText)
				{
					case '-1':
						resulttext = 'Fehler beim Beschreiben der Datenbank aufgetreten. Anzeige konnte nicht deaktiviert werden.';
						break;
					case '-9':
						resulttext = 'Berechtigung fehlt. Anzeige konnte nicht deaktiviert werden.';
						break;
					default:
						resulttext = 'Kein Rückgabewert erkannt.';
						break;
				};
			};
			if(resulttext!='')
			{
				var infodiv = document.getElementById('workinginfo');
	            if (infodiv.hasChildNodes())
	            {
	                while ( infodiv.childNodes.length >= 1 )
	                {
	                    infodiv.removeChild( infodiv.firstChild );
	                }
	            };
				var msg = document.createTextNode(unescape(resulttext));
				infodiv.appendChild(msg);
				var inp = document.createElement('INPUT');
				inp.type = 'button';
				inp.value = unescape("schlie%DFen");
				inp.onclick = function() {document.getElementById('workinginfo').style.display = 'none'; };
				infodiv.appendChild(inp);
			}
		}
	}
}
/* *************************************************************
 * Administration Controller
 ***************************************************************/
var lastloginid = -1;

function ToogleUserActivation(toogleid)
{
	httphandler = createXMLHttp();
    if(httphandler)
    {
		var session = document.getElementById('session').value;
		var status = document.getElementById('tooglestatus'+toogleid).value;
		status = (status=='1'?'-1':'1');
		var path = document.getElementById('baseurl').value+'/administration/toggleuseractivation/id/'+toogleid+'/stat/'+status+'/ses/'+session+'/type/ajax';
		var infodiv = document.getElementById('workinginfo');
		infodiv.style.display = 'block';
        if (infodiv.hasChildNodes())
        {
            while ( infodiv.childNodes.length >= 1 )
            {
                infodiv.removeChild( infodiv.firstChild );
            }
        };
        var wait = document.createElement('IMG');
        wait.src = document.getElementById('baseurl').value+'/statics/img/loading.gif';
        infodiv.appendChild(wait);
		var msg = document.createTextNode(unescape('Bitte warten, User-Status wird neu gesetzt.'));
		infodiv.appendChild(msg);
		lastloginid = toogleid;
        httphandler.open('GET', path, true);
        httphandler.onreadystatechange = ToogleUserActivationStatusOutput;
        httphandler.send(null);
    };
}

function ToogleUserDeletion(toogleid)
{
	httphandler = createXMLHttp();
    if(httphandler)
    {
		var session = document.getElementById('session').value;
		var status = document.getElementById('tooglestatus'+toogleid).value;
		//status = (status=='1'?'-1':'1');
		status = -3;
		var path = document.getElementById('baseurl').value+'/administration/toggleuseractivation/id/'+toogleid+'/stat/'+status+'/ses/'+session+'/type/ajax';

		lastloginid = toogleid;
        httphandler.open('GET', path, true);
       
        httphandler.send(null);
		location.reload();
    };
}

function ToogleUserActivationStatusOutput()
{
	if(httphandler)
	{
		if(httphandler.readyState==4)
		{
			var resulttext = '';
			alert(httphandler.responseText);
			switch(httphandler.responseText)
			{
				case '1':
				case '0':
				case '-1':
				//deleted
				case '-3':
					resulttext = '';
					document.getElementById('workinginfo').style.display = 'none';
					var columnstatus = document.getElementById('columnstatus'+lastloginid);
	                while ( columnstatus.childNodes.length >= 1 )
	                {
	                    columnstatus.removeChild( columnstatus.firstChild );
	                }
					columnstatus.appendChild(document.createTextNode(httphandler.responseText=='1'?'aktiviert':'deaktiviert'));
					
					document.getElementById('tooglestatus'+lastloginid).value = httphandler.responseText;
					//columnabo.innerHTML = 'drin';
					break;
				case '-2':
					resulttext = 'Fehler beim Beschreiben der Datenbank aufgetreten. Merkposten konnte nicht gespeichert werden.';
					break;
				
				default:
					resulttext = 'Kein Rückgabewert erkannt.';
					break;
			};
			if(resulttext!='')
			{
				var infodiv = document.getElementById('workinginfo');
	            if (infodiv.hasChildNodes())
	            {
	                while ( infodiv.childNodes.length >= 1 )
	                {
	                    infodiv.removeChild( infodiv.firstChild );
	                }
	            };
				var msg = document.createTextNode(unescape(resulttext));
				infodiv.appendChild(msg);
				var inp = document.createElement('INPUT');
				inp.type = 'button';
				inp.value = unescape("schlie%DFen");
				inp.onclick = function() {document.getElementById('workinginfo').style.display = 'none'; };
				infodiv.appendChild(inp);
			}
		}
	}
}

/* *************************************************************
 * Allgemeine Funktion, um die Position eines Elements am Bildschirm ausfindig zu machen
 * Author: THO
 ***************************************************************/

function findPos( oElement ) {
  if( typeof( oElement.offsetParent ) != 'undefined' ) {
    for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) {
      posX += oElement.offsetLeft;
      posY += oElement.offsetTop;
    }
    return [ posX, posY ];
  } else {
    return [ oElement.x, oElement.y ];
  }
}

function IsNumeric(strString)
   //  check for valid numeric strings	
   {
   var strValidChars = "0123456789.-,";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }



function hideOtherSubMenus(showMenu)
{
    var prefix = "path_";
    var othermenus = new Array();
    for (i=0;i<5;i++)
    {
        for (j=0;j<10;j++)
        {
            var submenu = prefix + i+"_"+j;
            if (submenu != showMenu)
            {
                othermenus.push(submenu);
            }
        }
    }
    hideDivs(othermenus);
}