
function reportAjaxError(request){
		alert('AJAX Error!');
	}
  
  
  function preloadImages() { 
  var d=document;
  if(d.images){
  if(!d.MM_p)
      d.MM_p=new Array();
    var i,j=d.MM_p.length,a=preloadImages.arguments;
    for(i=0; i < a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}


function createMarker(point, number) {
	var marker = new GMarker(point);
	GEvent.addListener(marker, "click", function() {
	marker.openInfoWindowHtml("<b>" + number + "</b>");
	});
	return marker;
}


  	function hideTeaserContent(what){
		var placeIn = ($('details_' + what));
		Effect.Fade(placeIn, { duration: 0.5, from: 1, to: 0 });
	}

    
    

function getRelativeMousePoints(ereignis) {
		
		var windowWidth = window.innerWidth;
		if(windowWidth == undefined) {
			windowWidth = document.documentElement.clientWidth;
		}
		
		var bodyWidth = $('body').offsetWidth;
		var bodyHeight = $('body').offsetHeight;
		//var offsetX = (windowWidth - bodyWidth) / 2; //site align center
		var offsetX = 0; //site align left
		var offsetY = window.pageYOffset;
            
                //ie
		if(offsetY == undefined) {
			offsetY = document.body.scrollTop;
		}
               
                
		var relMouseX = ereignis.clientX - offsetX;
		var relMouseY = ereignis.clientY + offsetY;

		var points = new Array;
		points['x'] = relMouseX;
		points['y'] = relMouseY;
	
		return points;
	}
  
  
  function myx(e) {
		var pos = array;
		var posX = e.clientX;
		var posY = e.clientY;
		posX = posX + 5;
		if(ifIe() == 0) {
			posY = posY + 5 + window.pageYOffset;
		} else {
			posY = posY + 5 + document.body.scrollTop;
		}
		pos[0] = posX;
		pos[1] = posY;
		return pos;
	}
  
  
		/**
* Ajax call for Bookstore filtert by category
*/
function loadBooks(categoryId,title,author,act,what){
	var placeIn = $(what);
	
	var url = '/inc/ajax.loadBooks.php?categoryId='+categoryId+'&title='+title+'&author='+author+'&act='+act+'&what='+what;
	var myAjax = new Ajax.Updater(
	{success: placeIn},
	url,
	{
		method: 'get',
		onFailure:reportAjaxError,
		evalScripts:true
	}
	);
}

function loadBooksTeaser(categoryId,title,author,act,what){
	var placeIn = $(what);

	var url = '/inc/ajax.loadBooksTeaser.php?categoryId='+categoryId+'&title='+title+'&author='+author+'&act='+act+'&what='+what;
	var myAjax = new Ajax.Updater(
	{success: placeIn},
	url,
	{
		method: 'get',
		onFailure:reportAjaxError,
		evalScripts:true
	}
	);
}


		/**
* Ajax call for Bookstore filtert by category ONLY
*/
function loadBooksCat(categoryId,title,author,act,what){
	var placeIn = $(what);
	
	var url = '/inc/ajax.loadBooksCat.php?categoryId='+categoryId+'&title='+title+'&author='+author+'&act='+act+'&what='+what;
	var myAjax = new Ajax.Updater(
	{success: placeIn},
	url,
	{
		method: 'get',
		onFailure:reportAjaxError,
		evalScripts:true
	}
	);
}



function getTitleOptions(catId,author){
 var placeIn = $('title');

 var url = '/inc/ajax.loadBookTitleOptions.php?catId='+catId+'&author='+author;
 var myAjax = new Ajax.Updater(
	 {success: placeIn},
	 url,
	 {
		 method: 'get',
		 onFailure:reportAjaxError,
		 evalScripts:true
	 }
	 );
}



function getAuthorOptions(catId,title){
 var placeIn = $('author');

 var url = '/inc/ajax.loadBookAuthorOptions.php?catId='+catId+'&title='+title;
 var myAjax = new Ajax.Updater(
	 {success: placeIn},
	 url,
	 {
		 method: 'get',
		 onFailure:reportAjaxError,
		 evalScripts:true
	 }
	 );
}



/**
* Ajax call for Suppliers 
*/
function loadSuppliers(categoryId,act,what){
	var placeIn = $(what);
	
	var url = '/inc/ajax.loadSuppliers.php?categoryId='+categoryId+'&act='+act+'&what='+what;
	var myAjax = new Ajax.Updater(
	{success: placeIn},
	url,
	{
		method: 'get',
		onFailure:reportAjaxError,
		evalScripts:true
	}
	);
}

function waiting(prmSec)
{
	prmSec *= 1000;
	var eDate = null;
	var eMsec = 0;
	var sDate = new Date();
	var sMsec = sDate.getTime();

	do {
	  eDate = new Date();
	  eMsec = eDate.getTime();

	} while ((eMsec-sMsec)<prmSec);
	
	location.href=location.href;
}


function login_user(formID,idEl,tpl,pledge_id)
{
	var output = '';
	var no_errors=true;
	
	if(tpl=="pledge")
	{
		if($('pUserFE_'+pledge_id).value=='User name' || $('pPasswordFE_'+pledge_id).value=="")
		{
			if($('pUserFE_'+pledge_id).value=='User name')
			{
				output += 'User name is empty.\n';	
			}
			
			if($('pPasswordFE_'+pledge_id).value=="")
			{
				output += 'Password is empty.\n';	
			}
			
			$(idEl).update(output);
			no_errors=false;
		}
	}
	else
	{
		if($('pUserFE').value=='User name' || $('pPasswordFE').value=="")
		{
			if($('pUserFE').value=='User name')
			{
				output += 'User name is empty.\n';	
			}
			
			if($('pPasswordFE').value=="")
			{
				output += 'Password is empty.\n';	
			}
			
			$(idEl).update(output);
			no_errors=false;
		}	
	}
	
	
	if(no_errors==true)
	{
		var url = '/inc/ajax.loginUser.php';
		new Ajax.Request(url, {   
				method: 'get',
				parameters: $(formID).serialize(true),
				onSuccess: function(transport){
				  var response = transport.responseText;	
				  if(response!="error_1")
				  {	
					$(idEl).update(response); 
					waiting(1); 
				  }else{
					$(idEl).update('Please check you login data.');
				  }
				},
				onFailure: function(){ alert('Error.'); }
			}
		);
	}
}

function validEmail(email) 
{
  var strReg = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";
  var regex = new RegExp(strReg);
  return regex.test(email);
}

function register_user(formID,idEl,user_login,user_login_lang,user_name,user_name_lang,user_email,user_email_lang,instituation,instituation_lang,profession,profession_lang,country_id)
{
	var output = '';
	var checkEmail = validEmail(user_email);
	var max_length = 3;
	
	if(checkEmail==false || max_length>profession.length || max_length>instituation.length || max_length>user_login.length || user_name==user_name_lang || user_email==user_email_lang || instituation==instituation_lang || profession==profession_lang || country_id=='')
	{		
		if(user_login==user_login_lang)
		{
			output += 'User name is empty.\n';
		}
		else if(max_length>user_login.length)
		{
			output += 'User name must contain '+max_length+' Letters.\n';
		}
		
		if(user_name==user_name_lang)
		{
			output += 'User name is empty.\n';
		}	
		
		if(user_email==user_email_lang)
		{
			output += 'User email is empty.\n';
		} 
		else if(checkEmail==false) 
		{
			output += 'User email is incorrect.\n';
		}	
		
		if(instituation==instituation_lang)
		{
			output += 'Institution is empty.\n';
		}
		else if(max_length>instituation.length)
		{
			output += 'Institution must contain '+max_length+' Letters.\n';
		}
		
		if(profession==profession_lang)
		{
			output += 'Profession is empty.\n';
		}
		else if(max_length>profession.length)
		{
			output += 'Profession must contain '+max_length+' Letters.\n';
		}
		
		if(country_id=='')
		{
			output += 'Country is empty.\n';
		}
		
		$(idEl).update(output);
	}
	else
	{
		var url = '/inc/ajax.registerUser.php';
		new Ajax.Request(url, {   
				method: 'get',
				parameters: $(formID).serialize(true),
				onSuccess: function(transport){
				  var response = transport.responseText;	  
				  $(idEl).update(response); 
				},
				onFailure: function(){ alert('Error.'); }
			}
		);
	}
}

function loadNextComments(what,active_page,page_id_full,page_id,node_id,log_in)
{
	var placeIn = $(what);
	var url = '/inc/ajax.loadNextComments.php?log_in='+log_in+'&active_page='+active_page+'&page_id_full='+page_id_full+'&page_id='+page_id+'&node_id='+node_id;
	
	var myAjax = new Ajax.Updater(
	{success: placeIn},
	url,
	{
		method: 'get',
		onFailure:reportAjaxError,
		evalScripts:true
	}
	);
}

function loadCommentForm(what,node_id,page_id_full,page_id,log_in)
{
	var placeIn = $(what);
	var url = '/inc/ajax.loadCommentForm.php?log_in='+log_in+'&node_id='+node_id+'&page_id_full='+page_id_full+'&page_id='+page_id;
	
	var myAjax = new Ajax.Updater(
	{success: placeIn},
	url,
	{
		method: 'get',
		onFailure:reportAjaxError,
		evalScripts:true
	}
	);
}

function loadCommentDetails(what,id,action)
{
	//alert(what);
	var placeIn = $(what);
	var url = '/inc/ajax.loadCommentDetails.php?id='+id+'&action='+action;
	
	var myAjax = new Ajax.Updater(
	{success: placeIn},
	url,
	{
		method: 'get',
		onFailure:reportAjaxError,
		evalScripts:true
	}
	);
}

function sendComment(notice_uploadID,id_headline,lang_headline,id_comment,lang_comment,formID,noticeID,frameID,frameFormID)
{
	if($(id_headline).value==lang_headline && $(id_comment).value==lang_comment)
	{
		$(noticeID).update('Headline and comment are empty. Please try again.');
	}
	else if($(id_headline).value!=lang_headline || $(id_comment).value==lang_comment)
	{
		$(noticeID).update('Comment is empty. Please try again.');
	}
	else if($(id_headline).value==lang_headline || $(id_comment).value!=lang_comment)
	{
		$(noticeID).update('Headline is empty. Please try again.');
	}
	
	if($(id_headline).value!=lang_headline && $(id_comment).value!=lang_comment)
	{		
		var url = '/inc/ajax.handleNewComment.php';
		new Ajax.Request(url, {   
				method: 'get',
				parameters: $(formID).serialize(true),
				onSuccess: function(transport){
				  var response = transport.responseText;	  
				  $(noticeID).update(response); 
				  $('full_comment_form').innerHTML='';
				},
				onFailure: function(){ alert('Error.'); }
			}
		);
		
	}
}


  function startUpload(){
	  $('result').innerHTML='';
	  document.getElementById('f1_upload_process').style.visibility = 'visible';
	  return true;
  }
  
  function stopUpload(success,extenstions,maxsize){
	  var result = '';
	  if (success == 4){
		document.getElementById('result').innerHTML = '<span style="font-weight:bold;">Possible files to upload: '+extenstions+'!</span><br/><br/>';
	  }
	  else if (success == 3){
		document.getElementById('result').innerHTML = '<span style="font-weight:bold;">Image is too big (max '+maxsize+')!</span><br/><br/>';
	  }
	  else if (success == 2){
		document.getElementById('result').innerHTML = '<span style="font-weight:bold;">An error occurred during file upload!</span><br/><br/>';
	  }
	  else if (success == 1){
	  }
	  else {
		document.getElementById('result').innerHTML ='<span style="font-weight:bold;">An error occurred during file upload!</span><br/><br/>';
	  }
	  document.getElementById('f1_upload_process').style.visibility = 'hidden';
	  return true;
  }
  
	function delFile(file_id,filename,idEl,action,formID,max_upload_files,upload_file)
	{	
		//Aktuelle Aktionsnummer herausfinden
		var img_nr = action.split("=");
		var img_nr_int = parseInt(img_nr[1]);
		
		//Merke gelöschtes Bild
		var filename_2del = $('image_'+file_id).value;
		
		//Bild löschen
		$('image_'+file_id).value='';	
		
		//Aktion ändern
		var new_action_path = upload_file+"?img_nr="+(img_nr_int-1);
		$('fileUpload_form').action=new_action_path;
		
		//Buttons wieder aktivieren
		if((img_nr_int-2) < max_upload_files)
		{
			$('uploadButton').disabled=false;
			$('myfile').disabled=false;	
		}	
		
		var url = '/inc/ajax.deleteFileFromComment.php?file_id='+file_id+'&filename_2del='+filename_2del+'&filename='+filename;
		new Ajax.Request(url, {   
				method: 'get',
				parameters: $(formID).serialize(true),
				onSuccess: function(transport){
				  var response = transport.responseText;		  
				  $(idEl).update(response); 
				},
				onFailure: function(){ alert('Error.'); }
			}
		);
	}
	
	function password_forgotten(idEl,email,email_lang)
	{
		var placeIn = $(idEl);
		var url = '/inc/ajax.password_forgotten.php?email='+email;
		
		if(email!=email_lang && email!='')
		{			
			var myAjax = new Ajax.Updater(
			{success: placeIn},
			url,
			{
				method: 'get',
				onFailure:reportAjaxError,
				evalScripts:true
			}
			);	
		}
		else
		{		  
			$(idEl).update('User email is empty.'); 			
		}
	}
	
	
	/*********************************
	Functions of pledges modul
	**********************************/
	
	function sendPledge(pledgeLang,notice_error,active_page,formType,pledge_id,id_headline,lang_headline,id_comment,lang_comment,formID,noticeID)
	{
		if(formType=='comment')
		{
			//Kommentar zu Pledge
			if($(id_comment).value==lang_comment)
			{
				$(notice_error).update('Comment is empty. Please try again.');
			}
			else
			{		
				var url = '/inc/ajax.handleNewPledgeComment.php?pledgeLang='+pledgeLang+'&active_page='+active_page+'&formType='+formType+'&pledge_id='+pledge_id;
				new Ajax.Request(url, {   
						method: 'get',
						parameters: $(formID).serialize(true),
						onSuccess: function(transport){
						  var response = transport.responseText;	  
						  $(noticeID).update(response); 
						  $('full_comment_form').innerHTML='';
						},
						onFailure: function(){ alert('Error.'); }
					}
				);
				
			}
		}
		if(formType=='pledge')
		{
			//Pledge
			if($(id_headline).value==lang_headline)
			{
				$(notice_error).update('Headline is empty. Please try again.');
			}
			else
			{		
				var url = '/inc/ajax.handleNewPledge.php?pledgeLang='+pledgeLang+'&active_page='+active_page+'&formType='+formType+'&pledge_id='+pledge_id;
				new Ajax.Request(url, {   
						method: 'get',
						parameters: $(formID).serialize(true),
						onSuccess: function(transport){
						  var response = transport.responseText;	  
						  $(noticeID).update(response); 
						  $('full_comment_form').innerHTML='';
						},
						onFailure: function(){ alert('Error.'); }
					}
				);
				
			}
		}
	}

	//holt sich formular
	function make_another_pledge(pledgeLang,idEl,node_id,page_id_full,page_id,user_id,pledge_id)
	{
		var placeIn = $(idEl);
		var url = '/inc/ajax.make_another_pledge.php?pledgeLang='+pledgeLang+'&pledge_id='+pledge_id+'&node_id='+node_id+'&page_id_full='+page_id_full+'&page_id='+page_id+'&user_id='+user_id;
		
		var myAjax = new Ajax.Updater(
		{success: placeIn},
		url,
		{
			method: 'get',
			onFailure:reportAjaxError,
			evalScripts:true
		}
		);	
	}
	
	//holt sich formular
	function comment_on_this_pledge(pledgeLang,idEl,node_id,page_id_full,page_id,user_id,pledge_id)
	{
		var placeIn = $(idEl);
		var url = '/inc/ajax.comment_on_this_pledge.php?pledgeLang='+pledgeLang+'&pledge_id='+pledge_id+'&node_id='+node_id+'&page_id_full='+page_id_full+'&page_id='+page_id+'&user_id='+user_id;
		
		var myAjax = new Ajax.Updater(
		{success: placeIn},
		url,
		{
			method: 'get',
			onFailure:reportAjaxError,
			evalScripts:true
		}
		);
	}
	
	function vote_pledge(idEl,pledge_id,vote,user_id)
	{
		var placeIn = $(idEl);
		var url = '/inc/ajax.vote_pledge.php?pledge_id='+pledge_id+'&vote='+vote+'&user_id='+user_id;
		
		var myAjax = new Ajax.Updater(
		{success: placeIn},
		url,
		{
			method: 'get',
			onFailure:reportAjaxError,
			evalScripts:true
		}
		);
	}
	
	function loadLogin(idEl,pledge_id)
	{
		var placeIn = $(idEl);
		var url = '/inc/ajax.loadLogin.php?pledge_id='+pledge_id;
		
		var myAjax = new Ajax.Updater(
		{success: placeIn},
		url,
		{
			method: 'get',
			onFailure:reportAjaxError,
			evalScripts:true
		}
		);
	}
	
	function loadNextPledges(what,active_page,page_id_full,page_id,node_id,log_in,pledgeLang)
	{
		var placeIn = $(what);
		var url = '/inc/ajax.loadNextPledges.php?log_in='+log_in+'&active_page='+active_page+'&page_id_full='+page_id_full+'&page_id='+page_id+'&pledgeLang='+pledgeLang+'&node_id='+node_id;
		
		var myAjax = new Ajax.Updater(
		{success: placeIn},
		url,
		{
			method: 'get',
			onFailure:reportAjaxError,
			evalScripts:true
		}
		);
	}
	
	function change_password(idEl,new_pwd_lang,retype_new_pwd_lang,user_id)
	{
		var output = "";
		var new_pwd = $('new_pwd').value;
		var retype_new_pwd = $('retype_new_pwd').value;
		
		if(new_pwd==new_pwd_lang)
		{
			output += 'Password is empty.\n';	
		}
		
		if(retype_new_pwd==retype_new_pwd_lang)
		{
			output += 'Retyped password is empty.\n';	
		}
		
		if(new_pwd!=retype_new_pwd && retype_new_pwd!=retype_new_pwd_lang && new_pwd!=new_pwd_lang)
		{
			output += 'Please check your password. It is not identical.\n';	
		}
		
		if(output=="")
		{
			var url = '/inc/ajax.changePassword.php?user_id='+user_id;
			new Ajax.Request(url, {   
					method: 'get',
					parameters: $('newPwd_form').serialize(true),
					onSuccess: function(transport){
					  var response = transport.responseText;	  
					  $(idEl).update(response); 
					  $('feature_change_pwd').hide();
					},
					onFailure: function(){ alert('Error.'); }
				}
			);			
		}
		else
		{
			$(idEl).update(output);
		}
	}
