//globel Vars
var address_ajax_file_name    	= 'ajax_addressbook';

var contact_list_page 	= 0;
var maxPerPage 			= 10;
var orderby				= '';
var neworderby			= false;

var loadDataType		= 'searchByLetter';
var param				= 'all';

var actualAddressBookInterests = new Array();

//ajax Function for Einlader
function ajaxAddressBookCallPhpFunc(dateiName, phpFunction, stringParameters){
   
   var daten = "";
   var myAjax = new Ajax.Request(
                                    '/includes/php/ajax/'+dateiName+'.php?phpFunction=' + phpFunction,
                                    {
                                       method: 'post',
                                       asynchronous: false,
                                       parameters: stringParameters,
                                       onComplete : function(transport) {
                                          daten = transport.responseText;
                                       }
                                    }
                                );
    return daten;
}

//encode Json String
function encJSONString( data ){
    var jsonData = Object.toJSON(data);
    return jsonData;
}

//decode Json String
function decJSONString( jsonString ){
    var data = jsonString.evalJSON();
    return data
}

function contactlistNextPage(){
	contact_list_page++;	
	loadContactsData();	
}

function contactlistPrevPage(){
	contact_list_page--;	
	loadContactsData();
}

function setContactListPage( value ){
	contact_list_page = value;
}

function orderContactsBy( ob ){
	if( ob != null ){
		setOrderBy(ob);
	}	
	
	loadContactsData();
}

function setLoadDataType( type, parameter ){
	setContactListPage(0);
	
	if( type != null ){
		loadDataType = type;
	}
	
	if( parameter != null ){
		param = parameter; 
	}
	
	highliteLetter( parameter );
	loadContactsData();
}

function highliteLetter( letter ){
    var list_OBJ = $('azpaging');
    var newHtmlId = 'searchByLetter'+letter;
    
    if( list_OBJ  ){
        var linkList_OBJ = list_OBJ.getElementsByTagName('a');
        for(var i=0; i < linkList_OBJ.length; i++){
            if( linkList_OBJ[i].id == newHtmlId){
               linkList_OBJ[i].className = 'active';
               linkList_OBJ[i].style.textDecoration = 'underline'; 
            }else{
               linkList_OBJ[i].className = '';
               linkList_OBJ[i].style.textDecoration = 'none';
            }
        }
    }
}

function setOrderBy(ob){
	var result 		= ajaxAddressBookCallPhpFunc(address_ajax_file_name, 'setOrderBy', '?orderby='+ob);
	setContactListPage(0);
}

function setMaxPerPage( value ){
	maxPerPage = value;
	setContactListPage( 0 );
	
	var div = $('entriesPerPage');
	var link = 'maxPerPage'+value;
	
	if( div ){
		var linklist = div.getElementsByTagName('a');
		for(var i=0;i<linklist.length;i++){
			if( linklist[i].id == link ){
				linklist[i].style.fontWeight 	 = 'bold';
				linklist[i].style.textDecoration = 'underline';
			}else{
				linklist[i].style.fontWeight 	 = 'normal';
				linklist[i].style.textDecoration = 'none';
			}
		}
	}
	
	loadContactsData();
}

function openCategoryLayer( type ){
	switch( type ){
		case 'editContacts':
			if( (typeof actualAddressBookInterests != 'undefined') && (actualAddressBookInterests != null) ){
				showCategorieLayer('categorie_map', 'kategorie', 'thema', '', '', 4, 'kategorie', 'thema', actualAddressBookInterests);
			}else{				
				showCategorieLayer('categorie_map', 'kategorie', 'thema', '', '', 4, 'kategorie', 'thema');
			}
			break;
	}	
}

function loadContactsData( ){	
	switch(loadDataType){
		case 'search':
			searchAddressBook();
			break;
			
		case 'searchByLetter':
			searchAddressBookByLetter();
			break;
	}
}

function searchAddressBook(){	
	
	var searchObj = new Object();
		searchObj.string 		= $('searchstring').value;
		searchObj.category 		= $('kategorie').value;
		searchObj.topic 		= $('thema').value;
		searchObj.mailinglist	= $('mailinglist').value;
		searchObj.tags			= $('tags').value;
		searchObj.source		= $('source').value;
		
	var json_post_string 	= encJSONString(searchObj);	
	var result 				= ajaxAddressBookCallPhpFunc(address_ajax_file_name, 'loadContacts', '?type='+loadDataType+'&param='+json_post_string+'&page='+contact_list_page+'&maxPerPage='+maxPerPage);
	
    fillContactsList(result);
}

function searchAddressBookByLetter(){	
	
	var searchObj = new Object();
		searchObj.letter 	= param;
		
	var json_post_string 	= encJSONString(searchObj);	
	var result 				= ajaxAddressBookCallPhpFunc(address_ajax_file_name, 'loadContacts', '?type='+loadDataType+'&param='+json_post_string+'&page='+contact_list_page+'&maxPerPage='+maxPerPage);
	
    fillContactsList(result);
}

function fillContactsList( result ){
	var resultObj 		= decJSONString(result);	
    var contactsElem 	= $('contacts');
    var pagingTop 		= $('pagingTop');
    var pagingBottom 	= $('pagingBottom');
    var display_maxPage = 1;
    
    if( contactsElem ){
    	contactsElem.innerHTML = resultObj.data;
    }
    
    changePagingControls(resultObj);
    
    if( resultObj.maxPage > 0 ){
    	display_maxPage = resultObj.maxPage;
    }
    
    var txtSeite = gt('javascript','Seite');
    var txtVon   = gt('javascript','von');
    
    var pagingSiteText = txtSeite+" "+resultObj.actualPage+" "+txtVon+" "+display_maxPage;
    
    if( pagingTop && pagingBottom ){
    	pagingTop.innerHTML   	= pagingSiteText;
    	pagingBottom.innerHTML	= pagingSiteText;
    }
}

function changePagingControls(resultObj){
	if( (resultObj.actualPage+1) > resultObj.maxPage ){
    	document.getElementById('nextPageTop').style.display="none";
    	document.getElementById('nextPageBottom').style.display="none";
    }else{
    	document.getElementById('nextPageTop').style.display="block";
    	document.getElementById('nextPageBottom').style.display="block";
    }
    
    if( (resultObj.actualPage-1) < 1 ){
    	document.getElementById('prevPageTop').style.display="none";
    	document.getElementById('prevPageBottom').style.display="none";
    }else{
    	document.getElementById('prevPageTop').style.display="block";
    	document.getElementById('prevPageBottom').style.display="block";
    }
}

function setAddressRegisterTag(el){
	if( el != null ){		
		var oldString = document.getElementById('tags').value;
			oldString.trim();
		var search = el.value;
		var ergebnis = oldString.search(search);
		
		if( ergebnis == -1 ){
			if( oldString.length > 0 ){
				oldString += ", "
			}
			oldString += el.value;
			document.getElementById('tags').value = oldString;
		}
	}
}

function getAddressBookInterests(){
    var html_OBJ   = $('categorieLayer');
    var haef_list  = new Array();
    var daten_arr  = new Array();
    var postStr	   = '';
    var counter    = 0;    
    
    if( html_OBJ ){       
        haef_list = html_OBJ.getElementsByTagName('a');        
        
        for(var i=0; i < haef_list.length; i++ ){
            if( haef_list[i].rel && haef_list[i].rel.length > 1 ){
                ref_arr = haef_list[i].rel.split('::');
                var tmp_arr           = new Array();
                tmp_arr['cat_id']     = ref_arr[0];
                tmp_arr['topic_id']   = ref_arr[1];
                tmp_arr['name']       = ref_arr[2];
                daten_arr[counter]    = tmp_arr;   
                counter++;
            }
        }
    }
    
    renderAddressBookInterests( daten_arr );
    closeBrowserLayer();
}

function renderAddressBookInterests( daten_arr ){
	var html_content_OBJ = $('addressBookInterests');
    var html_str         = '';   
    var div_id           = '';
    
    if (html_content_OBJ && daten_arr.length > 0) {
        html_content_OBJ.innerHTML = '';
        
        for (var i=0; i < daten_arr.length; i++) { 
        	html_str += '<input type="hidden" name="addressBookInterests[]" value="'+daten_arr[i]['cat_id']+'::'+daten_arr[i]['topic_id'].replace(/}/g, "")+'"/>';
        	html_str += '<p><a href="javascript:;" onClick="openCategoryLayer(\'editContacts\');" title="'+daten_arr[i]['name']+'">'+daten_arr[i]['name']+'</a></p>';
        }
        
        for (var i=0; i < daten_arr.length; i++) {        	
        	actualAddressBookInterests[i] = daten_arr[i]['topic_id'].replace(/}/g, "");        	        
        }       
    }else{
    	html_str += '<input name="addressBookInterests[]" value="0::0" type="hidden">';    	
    }
    
    html_content_OBJ.innerHTML = html_str;
}

function setAddressBookCategories( cat_id, cat_name, topic_id, topic_name ){ 
	
	if ( topic_name == 'null' || topic_name == null) {
        topic_name = 'Alle';
    }
	
	var catLink = '<a href="javascript:;" onclick="showCategorieLayer([\'categorie_map\',\'topic_map\'],\'categorie_map\',\'topic_map\','+cat_id+','+topic_id+',2,\'kategorie\',\'thema\');" class="categoriemaplink" id="linkopencategoriemap">'+cat_name+'</a>';
	
	var categoryHiddenField = document.getElementById('kategorie');
	if(cat_id == null){		
		categoryHiddenField.value = '';
	}else{
		categoryHiddenField.value = cat_id;
	}	

	var topLink = '<a href="javascript:;" onclick="showCategorieLayer([\'categorie_map\',\'topic_map\'],\'categorie_map\',\'topic_map\','+cat_id+','+topic_id+',2,\'kategorie\',\'thema\');" class="categoriemaplink">'+topic_name+'</a>';
	
	var topicHiddenField = document.getElementById('thema');
	if(topic_id == null){		
		topicHiddenField.value = '';
	}else{
		topicHiddenField.value = topic_id;
	}

	var catIdent=document.getElementById('categorie_map');
		catIdent.innerHTML = catLink;
		
	var topIdent=document.getElementById('topic_map');            
    	topIdent.innerHTML = topLink;
}

function resetSearchForm(){
	var searchStringHtmlObj = document.getElementById('searchstring');	
	var mailinglistHtmlObj 	= document.getElementById('mailinglist');
	var tagsHtmlObj 		= document.getElementById('tags');
	var sourceHtmlObj 		= document.getElementById('source');
	
	searchStringHtmlObj.value = "";
	mailinglistHtmlObj.options[0].selected 	= true;
	tagsHtmlObj.options[0].selected 		= true;
	sourceHtmlObj.options[0].selected 		= true;
	
	clearCategorieLayer('categorie_map','topic_map','kategorie', 'thema', 2);
}
