var AUTOCOMPLETE_POINTER = null;
function buildHTML(file,div,qs) {
	if (AUTOCOMPLETE_POINTER) clearTimeout ( AUTOCOMPLETE_POINTER );
	AUTOCOMPLETE_POINTER = setTimeout("buildHTMLAjax('"+file+"','"+div+"',\""+qs+"\")",1000);
}

function buildHTMLAjax(file,div,qs) {
	
	var xmlhttp
	
	/*@cc_on @*/
	
	/*@if (@_jscript_version >= 5)
	  try {
	  xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")
	} catch (e) {
	  try {
	xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
	  } catch (E) {
	   xmlhttp=false
	  }
	}
	@else
	xmlhttp=false
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		try {
		xmlhttp = new XMLHttpRequest();
		} catch (e) {
		xmlhttp=false
		}
		}
		xmlhttp.open("GET", file+"?"+qs,true);
		xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4) {
		xxx=xmlhttp.responseText;
		if (document.getElementById(div)) {
			document.getElementById(div).innerHTML=xxx;
		}
		runScript(xxx);
		return false;
		
		  //xmlhttp.readyState=0;
		}
	}
	  xmlhttp.send(null)
}

function leftTrim(sString) {
	while (sString.substring(0,1) == ' ') {
		sString = sString.substring(1, sString.length);
	}
	return sString;
}

function rightTrim(sString) {
	while (sString.substring(sString.length-1, sString.length) == ' ') {
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function trim(sString) {
	while (sString.substring(0,1) == ' ') {
		sString = sString.substring(1, sString.length);
	}
	
	while (sString.substring(sString.length-1, sString.length) == ' ') {
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function in_array(needle, haystack) {
	for (h in haystack) {
		if (haystack[h] == needle) {
			return true;
		}
	}
	return false;
}


function moveOption(fromObj, toObj) {
	for(var i = fromObj.options.length - 1; i >= 0; i--) {
		if(fromObj.options[i].selected) {
			fromObj.options[i].selected = false;
			optionText = fromObj.options[i].text;
			optionValue = fromObj.options[i].value;
			for(var j = i; j < fromObj.options.length - 1; j++) {
				fromObj.options[j].text = fromObj.options[j + 1].text;
				fromObj.options[j].value = fromObj.options[j + 1].value;
			}
			fromObj.options.length = fromObj.options.length - 1;
			toObjIndex = toObj.options.length;
			toObj.options.length = toObj.options.length + 1;
			toObj.options[toObjIndex].text = optionText;
			toObj.options[toObjIndex].value = optionValue;
		}
	}
}

function is_numeric(num) {
	var exp = new RegExp("^[0-9-.]*$","g");
	return exp.test(num);
}

function select_value(obj) {
	return obj.options[obj.selectedIndex].value;
}

function add_in_event(ev,func,idx) {
	str = new String;
	content[idx] = '';
	if(ev) {
		str = ev.toString();
		function_start	= str.indexOf('{')+1;
		function_end	= str.indexOf('}',str.length-1);
		function_length	= function_end - function_start;
		content[idx]			= trim(str.substr(function_start,function_length));
	}
	return	function anonymous(event) { eval(content[idx]+" "+func); } 
}

function process_events(vars,func) {
	content = new Array(vars.length);
	for(i=0;i<vars.length;i++) {
		e = document.getElementsByName(vars[i]);
		e = e[0];
		if(e) {
			if(e.type=='text' || e.type=='textarea' || e.type=='password')
				e.onkeyup = add_in_event(e.onkeyup,func,i);
			if(e.type=='checkbox' || e.type=='radio')
				e.onclick = add_in_event(e.onclick,func,i);
			if(e.type=='select-one')
				e.onchange = add_in_event(e.onchange,func,i);
		}
	}
}

function remove_index_from_array(arr,idx) {
	var new_arr = new Array();
	for(i=0;i<arr.length;i++)
		if(i!=idx)
			new_arr[new_arr.length] = arr[i];
	return new_arr;
}

function is_alpha_numeric(alphane) {
	var numaric = alphane;
	for(var j=0; j<numaric.length; j++)
		{
		  var alphaa = numaric.charAt(j);
		  var hh = alphaa.charCodeAt(0);
		  if((hh > 47 && hh<59) || (hh > 64 && hh<91) || (hh > 96 && hh<123))
		  {
		  }
		else	{
			 return false;
		  }
		}
 	return true;
}

function is_alpha(alphane) {
	var numaric = alphane;
	for(var j=0; j<numaric.length; j++)
		{
		  var alphaa = numaric.charAt(j);
		  var hh = alphaa.charCodeAt(0);
		  if((hh > 64 && hh<91) || (hh > 96 && hh<123))
		  {
		  }
		else	{
			 return false;
		  }
		}
 	return true;
}

function modd(digit_string,impartit) {
	var m = 0;
	for(var i=0;i<digit_string.length;++i)
    m = (m * 10 + parseInt(digit_string.charAt(i))) % impartit;
	return m;
}

function isIBAN(val) {
	
	myval	= val.replace(/ /g,"");
	
	if(!is_alpha_numeric(myval))
		return false;
	
	country_codes = new Array("AD","AE","AF","AG","AI","AL","AM","AN","AO","AQ","AR","AS","AT","AW","AX","AZ","BA","BB","BD",
			"BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BW","BY","BZ","CA","CD","CF","CG","CH","CI","CK",
			"CL","CM","CN","CO","CR","CU","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET",
			"FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY",
			"HN","HR","HT","HU","ID","IE","IL","IN","IQ","IR","IS","IT","JA","JM","JO","KE","KG","KH","KI","KM","KN","KP",
			"KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","MG","MH","MK","ML",
			"MM","MN","MP","MQ","MR","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR",
			"NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RU","RW","SA",
			"SB","SC","SD","SE","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SX","SY","SZ","TC","TD","TF","TG",
			"TH","TJ","TK","TM","TN","TO","TP","TR","TT","TV","TW","TZ","UA","UG","UK","US","UY","UZ","VA","VC","VE","VG",
			"VI","VN","VU","WF","WS","XA","XC","XG","XJ","XM","XU","YE","YT","YU","ZA","ZM","ZW");
	
	replaces_letters	= new Array(/A/g, /B/g, /C/g, /D/g, /E/g, /F/g, /G/g, /H/g, /I/g, /J/g, /K/g, /L/g, /M/g, /N/g, /O/g, /P/g, /Q/g, /R/g, /S/g, /T/g, /U/g, /V/g, /W/g, /X/g, /Y/g, /Z/g);
	replaces_digits		= new Array("10", "11", "12", "13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35");
	
	if(!in_array(myval.substr(0,2).toUpperCase(),country_codes))
		return false;
	
	if(myval.substr(0,2).toUpperCase()=='CH')
		return true;
	
	str1	= myval.substr(4);
	str2	= myval.substr(0,2);
	check	= myval.substr(2,2);
	if(check.charAt(0)=='0')
		check = parseInt(check.charAt(1));
	str1	+= str2+'00';
	str1	= str1.toUpperCase();
	for(i=0;i<replaces_letters.length;i++)
		str1 = str1.replace(replaces_letters[i],replaces_digits[i]);
	
	x = modd(str1,97);
	
	y = 98 - x;
	
	if(y==check)
		return true;
	else
		return false;
}

function radio_value(name) {
	radios = document.getElementsByName(name);
	for(i=0;i<radios.length;i++)
		if(radios[i].checked)
			return radios[i].value;
}

function is_email(email) {
  if (window.RegExp) {
    var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
    var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
    var reg1 = new RegExp(reg1str);
    var reg2 = new RegExp(reg2str);
    if (!reg1.test(email) && reg2.test(email)) {
     return true;
    }
    return false;
  } else {
    if(email.indexOf("@") >= 0)
      return true;
    return false;
  }
}

function ajax_add_scroller(divId, idPrefix, e) {
	str  = " "+idPrefix+"_changed = 0; "; 
	str += " nof_elements = elem('"+divId+"').getElementsByTagName('td').length;";
	str += " if(nof_elements>0) { ";
	str += " if(e.keyCode==40) { "; 
	str += "	id = current_"+idPrefix+".toString();";
	str += "	nextId	= (current_"+idPrefix+"+1).toString();";
	str += "	if(elem('"+idPrefix+"'+nextId)) { ";
	str += " 		if(elem('"+idPrefix+"'+id)) ";
	str += "			elem('"+idPrefix+"'+id).className	= 'scroller_td'; ";
	str += "		elem('"+idPrefix+"'+nextId).className	= 'scroller_td_hover'; ";
	str += "		"+idPrefix+"_changed = 1; ";
	str += " 	} else { ";
	str += " 		elem('"+idPrefix+"'+id).className	= 'scroller_td';";
	str += "		elem('"+idPrefix+"1').className		= 'scroller_td_hover';";
	str += "		current_"+idPrefix+" = 0;";
	str += "		"+idPrefix+"_changed = 1; ";
	str += " 	} ";
	str += "	current_"+idPrefix+"++; ";
	str += " } ";
	str += " if(e.keyCode==38) { "; 
	str += "	if(current_"+idPrefix+"==0) current_"+idPrefix+"=nof_elements+1;";
	str += "	id = current_"+idPrefix+".toString(); ";
	str += "	nextId	= (current_"+idPrefix+"-1).toString();";
	str += "	if(nextId!='0') { ";
	str += " 		if(elem('"+idPrefix+"'+id)) ";
	str += "			elem('"+idPrefix+"'+id).className	= 'scroller_td'; ";
	str += "		elem('"+idPrefix+"'+nextId).className	= 'scroller_td_hover'; ";
	str += "		"+idPrefix+"_changed = 1; ";
	str += " 	} else { ";
	str += " 		elem('"+idPrefix+"'+id).className	= 'scroller_td';";
	str += "		elem('"+idPrefix+"'+nof_elements).className		= 'scroller_td_hover';";
	str += "		current_"+idPrefix+" = nof_elements+1;";
	str += "		"+idPrefix+"_changed = 1; ";
	str += " 	} ";
	str += "	current_"+idPrefix+"--; ";
	str += " } ";
	str += " if(e.keyCode==27) { ";
	str += " 	elem('"+divId+"').innerHTML = ''; ";
	str += "	current_"+idPrefix+" = 0;";
	str += " } ";
	str += " if(e.keyCode==13 && process_"+idPrefix+"_complete) { ";
	str += " 	process_"+idPrefix+"_complete(elem('"+idPrefix+"'+current_"+idPrefix+").getAttribute('idiu')); ";
	str += "	"+idPrefix+"_changed = 1; ";
	str += " } ";
	str += "}";
	
	if (e.stopPropagation) e.stopPropagation();
	if (e.stopEvent) e.stopEvent();
	
	if(e!=null && (e.keyCode==40 || e.keyCode==38 || e.keyCode==27 || e.keyCode==13)) {
		if (e.keyCode==13) {
			try{
				eval("var funcXX = process_"+idPrefix+"_complete;");
			}catch(e) {
				return true;
			};
		}
		eval(str);
		return false;
	} else {
		eval(str);
		return true;
	}
}

function change_selected(obj,val) {
	opts = obj.options;
	for(i=0;i<opts.length;i++)
		if(opts[i].value==val)
			obj.selectedIndex = i;
}

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 StrRev(str) {
	if (!str) return "";
	var revst="";
	for (i = str.length-1; i>=0; i--)
		revst+=str.charAt(i)
	return revst;
}


function isCIF(str) {
	mystr = str.replace(/ /g,'');
	mystr = mystr.replace(/RO/g,'');
	mystr = mystr.replace(/ro/,'');
	mystr = mystr.replace(/Ro/g,'');
	mystr = mystr.replace(/rO/g,'');
    mystr = mystr.replace(/R/g,'');
    mystr = mystr.replace(/r/g,'');
	
	if(isNaN(mystr))
		return false;
	if(mystr.length>10 || mystr.length<2)
		return false;
	
	testKey = "235712357";
	strrev	= StrRev(mystr);
	str1 	= strrev.substr(1);
	sum	= 0;
	for(i=0;i<str1.length;i++)
		sum = sum + parseInt(str1.charAt(i))*parseInt(testKey.charAt(i));
	sum = sum*10;
	if(sum%11==parseInt(strrev.charAt(0)) || (sum%11==10 && parseInt(strrev.charAt(0))==0))
		return true;
	else 
		return false;
}

function isRegCom(str) {
	mystr = str.replace(/ /g,'');
    mystr = mystr.replace(/J/g,'');
    mystr = mystr.replace(/j/g,'');
	re	= new RegExp("^[0-9]{2,3}/[0-9]{2,6}/[0-9]{2,4}");
	if(mystr.match(re))
		return true;
	else
		return false;
}

function isCNP(str) {
	if(str.length!=13)
		return false;
	if(isNaN(str))
		return false;
	
	verify	= '279146358279';
	sum	= 0;
	for(i=0;i<12;i++)
		sum += parseInt(str.charAt(i))*parseInt(verify.charAt(i));
	if(sum%11<10 && sum%11==parseInt(str.charAt(12)))
		return true;
	if(sum%11==10 && 1==parseInt(str.charAt(12)))
		return true;
	return false;
}
