function ge(id) {
	return document.getElementById(id);
}

function gn(name, all) {
	if (all == true)
		return document.getElementsByName(name);
	else
		return document.getElementsByName(name)[0];
}

function addWindowOnLoad(func) {
	window.onload = (function(old) {
		return function() {
			if (typeof(old) == 'function') old();
			// Run new code here...
			func();
		};
	})(window.onload);
}

function runScript(text){
	var nrg=new RegExp('<script.*?>((.|[\\r\\n]+)*?)</script>','ig');
	var matches=nrg.exec(text);
	while(matches!=null&&nrg.lastIndex!=0){
		try {
			eval(matches[1]);
			matches=nrg.exec(text);
		}
		catch(e) {
			alert('Eroare la evaluarea codului:\n' + matches[1]);
			return;
		}
	}
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
	curtop += obj.y;
	return curtop;
}

function trim(str) {
	var	str = str.replace(/^\s\s*/, ''), ws = /\s/, i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}

function stopEvent(event) {
	if(event.stopPropagation) {event.stopPropagation();}
	event.cancelBubble = true;
}

function addErrors(id, errors) {
	var html = '<table border="0" cellspacing="0" cellpadding="0" style="background-color:#FFE1E1; border:solid 1px #FF0000;"><tr><td colspan="2" height="5"></td></tr>';
	for (i = 0; i < errors.length; i++) {
		html += '<tr><td width="1" valign="middle" style="padding-left:10px; padding-right:4px;"><img src="../images/bifa_nu.png" alt="error" /></td><td valign="middle" style="padding-right:10px;">&bull;&nbsp;' + errors[i] + '</td></tr>';
	}
	ge(id).innerHTML = html + '<tr><td colspan="2" height="5"></td></tr></table>';
	ge(id).style.display = "block";
}

function startUpload() {
	ge('ajaxstate').style.display = "";
	ge('ajaxstate').innerHTML = "Se trimite fisierul...";
}

function stopUpload() {
	ge('ajaxstate').style.display = "none";
}

function radioVal(name) {
	var rs = document.getElementsByName(name);
	for (i = 0; i < rs.length; i++) {
		if (rs[i].checked) return rs[i].value;
	}
	return null;
}

function checkRadio(name, val) {
	var rs = document.getElementsByName(name);
	for (i = 0; i < rs.length; i++) {
		if (rs[i].value == val)
			rs[i].checked = true;
		else
			rs[i].checked = false;
	}
	return null;
}

function checkCheck(name, val) {
	var ck = document.getElementsByName(name)[0];
	if (ck.value == val)
		ck.checked = true;
	else
		ck.checked = false;
	return null;
}

function checkChecks(name, vals) {
	var cks = document.getElementsByName(name);
	for (i = 0; i < cks.length; i++) {
		if (vals[cks[i].value])
			cks[i].checked = true;
		else
			cks[i].checked = false;
	}
	return null;
}

function showArray(array) {
	var out = "";
	for (i in array) {
		if (out) out += "\n";
		out += i + " - " + array[i];
	}
	alert(out);
}

function makeAjaxString(formid) {
	var theform = ge(formid);
	var args = "";
	for (i = 0; i < theform.length; i++) {
		if (theform.elements[i].type != "file") {
			if ((theform.elements[i].type == "radio" && theform.elements[i].checked) || (theform.elements[i].type == "checkbox" && theform.elements[i].checked) || (theform.elements[i].type != "radio" && theform.elements[i].type != "checkbox"))
			if (theform.elements[i].name != "") {
				if (args != "") args += "&";
				args += theform.elements[i].name + "=" + encodeURIComponent(theform.elements[i].value);
			}
		}
	}
	return args;
}

function validateForm(formid){
	var theform=ge(formid);
	var err=true;
	for(i=0; i<theform.length; i++){
		if(theform.elements[i].className.indexOf('REQUIRED')!=-1 && trim(theform.elements[i].value)==''){
			err=false;
		}
	}
	return err;
}

function sendFormRes(result, debug){
	if(debug) alert(result);
	runScript(result);
}

function sendForm(formId,action,debug){
	var request = new httpRequest("POST", HOSTNAME + action, makeAjaxString(formId), true);
	if (request.initRequest()){
		request.setHandlerFunction("sendFormRes", debug);
		request.sendRequest();
	}
}

function getDataRes(result, id){
	ge(id).innerHTML=result;
	runScript(result);
}

function getData(action,varString,id){
	var request = new httpRequest("POST", HOSTNAME + action, varString, true);
	if (request.initRequest()){
		request.setHandlerFunction("getDataRes", id);
		request.sendRequest();
	}
}

function sendDataRes(result, debug){
	if(debug) alert(result);
	runScript(result);
}

function sendData(action,varString,debug){
	var request = new httpRequest("POST", HOSTNAME + action, varString, true);
	if (request.initRequest()){
		request.setHandlerFunction("sendDataRes",debug);
		request.sendRequest();
	}
}

function checkAll(elm) {
	var checks = gn("ck[]", true);
	for (i = 0; i < checks.length; i++)
		checks[i].checked = elm.checked;
}

function checkMe(elm) {
	if (!elm.checked)
		ge('ckall').checked = false;
	else {
		var allchecked = true;
		var checks = gn("ck[]", true);
		for (i = 0; i < checks.length; i++)
			if (!checks[i].checked)
				allchecked = false;
		if (allchecked)
			ge('ckall').checked = true;
	}
}

function keep_alive_res(result) {
	/*if (result != '')
	alert(result);*/
}

function keep_alive() {
	var request = new httpRequest("POST", HOSTNAME + 'keep_alive', '', true);
	if (request.initRequest()){
		request.setHandlerFunction("keep_alive_res");
		request.sendRequest();
	}
}

function keep_scroll(the_form) {
	var scx = document.createElement('input');
	scx.type='hidden';
	scx.name='scroll_x';
	scx.value=document.documentElement.scrollLeft;
	the_form.appendChild(scx);
	var scy = document.createElement('input');
	scy.type='hidden';
	scy.name='scroll_y';
	scy.value=document.documentElement.scrollTop;
	the_form.appendChild(scy);
	return true;
}

function reload_captcha(captcha_im_id,src){
	var today = new Date();
	var now = today.getTime();
	document.getElementById(captcha_im_id).src=src+'?t='+now;
}

function highlight_required_field(name, className) {
	var elm = gn(name);
	if (!elm) {
		return;
	}
	var req_parent = null;
	var sibls = null;
	while (!req_parent) {
		sibls = elm.parentNode.getElementsByTagName('span');
		for (j = 0; j < sibls.length; j++) {
			if (sibls[j].className == 'required') {
				req_parent = sibls[j].parentNode;
			}
		}
		if (!req_parent) {
			elm = elm.parentNode;
		}
	}
	req_parent.className += ' '+className;
}

function generate_password(length, type, special) {
  var iteration = 0;
  var password = "";
  var randomNumber;
  if(special == undefined){
      var special = false;
  }
  while(iteration < length){
    randomNumber = (Math.floor((Math.random() * 100)) % 94) + 33;
	if(type == 'letters'){
		if ((randomNumber >=48) && (randomNumber <=57)) { continue; }
	}
	if(type == 'numbers'){
		if ((randomNumber >=65) && (randomNumber <=90)) { continue; }
		if ((randomNumber >=97) && (randomNumber <=122)) { continue; }
	}
    if(!special){
      if ((randomNumber >=33) && (randomNumber <=47)) { continue; }
      if ((randomNumber >=58) && (randomNumber <=64)) { continue; }
      if ((randomNumber >=91) && (randomNumber <=96)) { continue; }
      if ((randomNumber >=123) && (randomNumber <=126)) { continue; }
    }
    iteration++;
    password += String.fromCharCode(randomNumber);
  }
  return password;
}
