	var openUser = '';

	function startIndicator(){
		$('indicator').src = "images/ajax-loader-arrows.gif?"+Math.random()*5;
	}
	
	function stopIndicator(img){
		if(img === null){
			img = "icns/database_lightning.png";
		}
		
		$('indicator').src = img;
	}

	function doLogin(r){
		$('nfo').removeClassName('info');
		$('nfo').removeClassName('error');
		$('nfo').removeClassName('ok');

		if(r.status != "200"){
			$('nfo').addClassName('error');
			new Effect.Highlight('nfo', {startcolor:'#ff8888', endcolor:'#ffeeee'});
			
		}else{
			$('nfo').addClassName('ok');
			document.location = "/product.php";
		}
	}
	
	function doRequest(r){
		$('nfo').removeClassName('info');
		$('nfo').removeClassName('error');
		$('nfo').removeClassName('ok');

		if(r.status != "200"){
			$('nfo').addClassName('error');
		}else{
			$('nfo').addClassName('ok');
		}
	}

	function editUserdata(el){
		startIndicator();
		var url = '/ajax/useradmin/userform.php';
		new Ajax.Updater(
			el,
			url,
			{evalScripts: true}
		);
	}
	
	function hideOpenUser(el){
		if(el === null){
			el = openUser;
		}

		if(el != ""){
			$('usr_' + el).hide();
			$('edt_' + el).removeClassName('company_minus');
			$('usrd_' + el).update("");
		}
	}

	function cleanupEl(el){
		var newEl = "";
		var rxFilter = /[a-zA-Z0-9_]/;
		for (var i = 0; i < el.length; i++){
			if(rxFilter.test(el.substring(i, i+1))){
				newEl += el.substring(i, i+1);
			}
		}

		return newEl;
	}
	
	function editUser(el){
		//hideOpenUser(null);
		elClean = cleanupEl(el);
		if($('usr_' + elClean).visible()){
			hideOpenUser(elClean);
		}else{
			startIndicator();
			openUser = elClean;
			$('usr_' + elClean).show();
			$('edt_' + elClean).addClassName('company_minus');
			
			var upd_el = 'usrd_' + elClean;
			var url = "/ajax/useradmin/userform.php?username=" + el;

			if($('activeUserPage')){
				url += "&repage=" + $('activeUserPage').value;
			}

			new Ajax.Updater(
				upd_el,
				url,
				{evalScripts:true, parameters:Form.serialize(document.forms[0])}
			);
		}
	}
	
	function checkPassword(){
		if($('pwd').value != $('pwd_chk').value){
			$('pwd').setStyle({backgroundColor: '#f88'});
			$('pwd').value = "";
			$('pwd_chk').setStyle({backgroundColor: '#f88'});
			$('pwd_chk').value = "";
		}
	}

	function changeCart(obj){
		startIndicator();
		
		var url = '/ajax/product/cart.php?v=' + obj.value;
		new Ajax.Updater(
			'cartcounter',
			url,
			{evalScripts:true}
		);
	}

	
	function checkBoxes(opt){
		showOverBox();

		var cb = document.getElementsByClassName('checkbox');
		
		$('checked').value = "";
		$('unchecked').value = "";

		for(i = 0; i < cb.length; i++){
			cb[i].checked = opt;
			if(opt){
				$('checked').value += cb[i].id + ",";
			}else{
				$('unchecked').value += cb[i].id + ",";
			}
		}
		new Ajax.Updater('cartcounter','/ajax/product/cart.php?batch=1',{evalScripts:true, parameters:Form.serialize($('frmCart'))});
	}
	
	function removeCart(){
		showOverBox();
		new Ajax.Updater('cartcounter','/ajax/product/removecart.php',{evalScripts:true});
	}

	function changeOrder(row){
		startIndicator();
		$('th_' + $('orderrow').value).removeClassName($('orderdir').value);
		if($('orderrow').value == row){
			if($('orderdir').value == 'asc'){
				$('orderdir').value = 'desc';
			}else{
				$('orderdir').value = 'asc';
			}
		}else{
			$('orderdir').value = 'asc';
		}
		$('orderrow').value = row;
		$('th_' + row).addClassName($('orderdir').value);
		pageProducts(0);
	}

	function pageProducts(start){
		startIndicator();
		url = '/ajax/product/table.php?start=' + start;
		new Ajax.Updater(
			'resultdiv',
			url,
			{evalScripts:true, parameters:Form.serialize(document.forms[0])}
		);
	}
	
	
	function fetchProductHits(element, update){
		startIndicator();

		if(element !== null && update !== null){
			$(update.id).hide();

			if($(element.id).value != ""){
				if(!/\((\d+)\)/.test($(element.id))){
					var rxFilter = /^([0-9A-Za-z]+)?.*$/;
				}else{
					var rxFilter = /\((\d+)\)/;
				}
				rxFilter.exec($(element.id).value);
				$(element.id).value = RegExp.$1;
			}
		}

		var url = '/ajax/product/prefetch.php';
		new Ajax.Updater(
			'hitcounter',
			url,
			{evalScripts:true, parameters:Form.serialize(document.forms[0])}
		);
	}
	
	function activateButtons(b){
		$('btn_download').disabled = b;
		$('btn_print').disabled = b;
		$('btn_mail').disabled = b;
	}

	function fetchCompanyHits(element, update){
		if(element !== null){
			if(element.id != 'autocmplt_company'){
				checkRoles();
			}
			$(update.id).hide();

			if($(element.id).value != ""){
				var rxFilter = /^.*?\s\((\d+)\)$/;
				if(!rxFilter.test($(element.id).value)){
					var rxFilter = /^([0-9A-Za-z]+).*$/;
					$('srcmode_company').value = 'w';
				}else{
					$('srcmode_company').value = 'd';
				}
				rxFilter.exec($(element.id).value);
				$(element.id).value = RegExp.$1;
			}
		}

		startIndicator();
		var url = '/ajax/useradmin/prefetch.php?area=' + cmpMode;

		new Ajax.Updater(
			'hitcounter',
			url,
			{evalScripts:true, parameters:Form.serialize(document.forms[0])}
		);
	}
	
	function isValidEMail(str){
		var rxFilter = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
		return rxFilter.test(str);
	}
	
	function checkEMail(obj){
		if(!isValidEMail(obj.value)){
			$(obj.id).setStyle({backgroundColor: '#f88'});
			$('emailerror').show();
			$('btnrequest').disabled = true;
		}else{
			$(obj.id).setStyle({backgroundColor: '#fff'});
			$('emailerror').hide();
			if($('agb').checked){
				$('btnrequest').disabled = false;
			}
		}
	}
	function checkEMailUsrFrm(obj){
		if(!isValidEMail(obj.value)){
			$(obj.id).setStyle({backgroundColor: '#f88'});
			$('emailerror').show();
		}else{
			$(obj.id).setStyle({backgroundColor: '#fff'});
			$('emailerror').hide();
		}
	}
	
	function generateDoc(type){
		startIndicator();

		var url = "/ajax/product/generate_info.php?type=" + type;
		new Ajax.Updater(
			'resultdiv',
			url,
			{evalScripts:true}
		);
	}
	
	function fileAction(url){
		new Ajax.Updater(
			'resultdiv',
			url,
			{evalScripts:false}
		);
	}
	
	function showOverBox(){
		$('overlay').show();
		center('box');
		return false;
	}
	
	function hideOverBox(){
		$('box').hide();
		$('overlay').hide();
		return false;
	}
	
	function showFilebrowser(){
		$('overlay').show();
		center('filebrowser');
		$('country').hide();
		$('language').hide();
		$('language_mail').hide();

		return false;
	}
	
	function hideFilebrowser(){
		$('filebrowser').hide();
		$('overlay').hide();

		$('country').show();
		$('language').show();
		$('language_mail').show();
		return false;
	}
	
	function center(element){
		try{
			element = $(element);
		}catch(e){
			return;
		}
		
		var my_width = 0;
		var my_height = 0;
		
		if ( typeof( window.innerWidth ) == 'number' ){
			my_width = window.innerWidth;
			my_height = window.innerHeight;
		}else if ( document.documentElement &&( document.documentElement.clientWidth || document.documentElement.clientHeight )){
			my_width = document.documentElement.clientWidth;
			my_height = document.documentElement.clientHeight;
		}else if ( document.body && ( document.body.clientWidth || document.body.clientHeight ) ){
			my_width = document.body.clientWidth;
			my_height = document.body.clientHeight;
		}
		
		element.style.position = 'absolute';
		element.style.zIndex = 99;
		
		var scrollY = 0;
		
		if ( document.documentElement && document.documentElement.scrollTop ){
			scrollY = document.documentElement.scrollTop;
		}else if ( document.body && document.body.scrollTop ){
			scrollY = document.body.scrollTop;
		}else if ( window.pageYOffset ){
			scrollY = window.pageYOffset;
		}else if ( window.scrollY ){
			scrollY = window.scrollY;
		}
		
		var elementDimensions = Element.getDimensions(element);
		var setX = ( my_width - elementDimensions.width ) / 2;
		var setY = ( my_height - elementDimensions.height ) / 3 + scrollY;
		setX = ( setX < 0 ) ? 0 : setX;
		setY = ( setY < 0 ) ? 0 : setY;
		
		element.style.left = setX + "px";
		element.style.top = setY + "px";
		element.style.display = 'block';
	} 
