/*

   javascript lib for bonoferta templates
   
   this file contains all site specific functions
   
   author: henry farkas
   date:   15.12.2008

*/

//console.log("bo.js implemented");  

// ------------------------------------------------------------------
// constants

var _ue_ = String.fromCharCode(0xFC);
var _Ue_ = String.fromCharCode(0xDC);

var _ae_ = String.fromCharCode(0xE4);
var _Ae_ = String.fromCharCode(0xC4);

var _oe_ = String.fromCharCode(0xF6);
var _Oe_ = String.fromCharCode(0xD6);
      
var _sz_ = String.fromCharCode(0xDF);

// ------------------------------------------------------------------
// general functions

// returns index of obj in array
function getIndex(array,obj) {
   for (var i=0; i<array.length; i++) {
      if (array[i] == obj) return i;
   }
}

function trim(zeichenkette) {
  // Erst führende, dann Abschließende Whitespaces entfernen
  // und das Ergebnis dieser Operationen zurückliefern
  return zeichenkette.replace (/^\s+/, '').replace (/\s+$/, '');
}

function replaceUmlaute(str) {
	
	str = str.replace(new RegExp(/ü/g), _ue_);
	str = str.replace(new RegExp(/Ü/g), _Ue_);
	
	str = str.replace(new RegExp(/ä/g), _ae_);
	str = str.replace(new RegExp(/Ä/g), _Ae_);
	
	str = str.replace(new RegExp(/ö/g), _oe_);
	str = str.replace(new RegExp(/Ö/g), _Oe_);
	
	str = str.replace(new RegExp(/ß/g), _sz_);
	
	return str; 	
}


// ------------------------------------------------------------------
// code for menu/submenu/imprint controls
// loading of external content files

var intNewSectionId = -1;

// change active menuitem index
function setActiveMenuItemUrl(strUrl) {
   _intCurCatID = getIndex(aSectionUrls,strUrl);
}

// function is called when menu is reloaded (at start) or when any menuitem is clicked (incl. imprint)
function updateMenu(jqClicked) {
   
	//console.log("updateMenu("+jqClicked.attr('id')+") :: _intCurCatID="+_intCurCatID);
  
   // check if regular menuitem has been clicked (or imprint)
   if (jqClicked.attr('id') <= _intCats) {
		// put clicked menuitem into active state
	   jqClicked.css({cursor: 'default'});
	   $('img.button_up', jqClicked).hide();
		$('img.button_over', jqClicked).hide();
		$('img.button_down', jqClicked).show();   
	   jqClicked.unbind();
	   
	   // bind action to imprint link
	   $('td#imprint img').bind('click', menuClick);
	   $('td#imprint img').css({cursor: 'pointer'});
	} else {
		// deactivate imprint link
		$('td#imprint img').unbind();
		$('td#imprint img').css({cursor: 'default'});
	}
   
   // get all regular menu elements (all except imprint)
   var jqCats = $('td.menu_element'); 
   
   // put behaviour to all manu elements (except the one which has been clicked)
   for (var i=0; i<jqCats.length; i++) { 	
   
   	var jqCat = $(jqCats.get(i));
   
   	if (jqCat.get(0) != jqClicked.get(0)) {      
   		
			$('img.button_up', jqCat).show();
			$('img.button_over', jqCat).hide();   		
			$('img.button_down', jqCat).hide();
   	
   		jqCat.unbind();
   	
			jqCat.bind('mouseenter', function() {
				$('img.button_up', this).hide();
				$('img.button_over', this).show();
				$('img.button_down', this).hide(); 
			});   	
   		
   		jqCat.bind('mouseleave', function() {
   			$('img.button_up', this).show(); 
				$('img.button_over', this).hide();
				$('img.button_down', this).hide();
			});
			
			jqCat.bind('click', menuClick);   	
   	
   		jqCat.css({cursor: 'pointer'});	
   	}
	}
}   

// function changes cat header
function updateCatHead(intCatNo) {
	//console.log('updateCatHead(' + intCatNo +') called :: _intCurCatID = ' + _intCurCatID);
	$('td#cat_heads div#cat_head_' + (_intCurCatID+1)).hide();
	$('td#cat_heads div#cat_head_' + intCatNo).show();
}

// function for clickevents in menu - calls updates menu function, calls content loader function and calls update category header function
function menuClick() { 
   //console.log("menuClick :: id = "+$(this).attr('id'));  
   updateMenu($(this));
   updateCatHead($(this).attr('id'));
   //updateHeadImg($(this).attr('id'));
   getFile(aSectionUrls[$(this).attr('id')-1]);
   
   _intCurCatID = $(this).attr('id') - 1;
}

// load external file and display in content pane 
function getFile(strUrl) {
   //console.log("getFile("+strUrl+") called");
   //console.log("current language = "+getActiveLang());
   //console.log("current sectionId = "+intCurSectionId.toString());  
      
   $('#content_pane').load(strUrl + ' #root', function() {           
   
   	// scroll to top of page
   	// firefox
   	try {
   		window.scrollTo(0,0);
		} catch (e) {
			/* just for the sake of nice coding style */	
		}
   	// ie6
   	try {
   		window.scroll();
		} catch (e) {
		   /* just for the sake of nice coding style */
		}
		
		// init thickboxes  
	  tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
	  imgLoader = new Image();// preload image
	  imgLoader.src = tb_pathToImage;
   });        
   
}

// imprint loader
function loadImprint() {
   updateMenu(aSectionUrls.length-1); 
   getFile(aSectionUrls[aSectionUrls.length-1]);
}



// ------------------------------------------------------------------
// code for mailer

function submitMail() {

	var aFields = $(':input:not(:hidden):not(:button)').get();
	
	var sMailerParams = "";
	var sErrorMsg = "";
	var bError = false;
	
	for (var i=0; i<aFields.length; i++) {
		// check if fields have content
		if (!trim(aFields[i].value)) {
			// error                       			                       
			if (!trim(sErrorMsg)) sErrorMsg = "Bitte vervollständigen Sie folgende Eingabfelder: \n";			
			sErrorMsg += "- " + $(aFields[i]).attr('name') + " \n";
			bError = true;
		}
	}
	
	if (!bError) {
		// check mail adress
		var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
		var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
		var regex = "^"+usr+"\@"+domain+"$";
		var rxMail = new RegExp(regex);
		var check = (rxMail.test($('input#Email').val()));
		if (check!=true) {
		   sErrorMsg = "Die von Ihnen angegebene E-Mail Adresse ist ungültig.";
			bError = true;
		}	 
	}	
	
	if (!bError) {
		// check phone number
		var rxPhone = new RegExp(/^[\d\/\\\(\)\.\s+-]+$/);       
		check = (rxPhone.test($('input#Tel').val()));
		if (check!=true) {
		   sErrorMsg = "Die von Ihnen angegebene Telefonnummer ist ungültig.";
			bError = true;
		}	
	}
	
	if (bError) displayMessage(sErrorMsg); 
	else {                      
		
		var oData = new Object();
		oData.ossadnik = 1;
		oData.name = replaceUmlaute(aFields[0].value);
		oData.email = aFields[1].value;
		oData.tel = aFields[2].value;
		oData.nachricht = replaceUmlaute(aFields[3].value);                                                                                  

		var sMsgLayer = 
			'<!-- message layer -->' +
			'<div id="messageLayer" style="position:absolute; width:100%; height:' + getPageSize()[1] + 'px; z-index: 2; background-image: url(img/00_fullOverlay.gif)">' +     
			'</div>';

		$('div#globalContainer').append(sMsgLayer);
	
		$.post(
			"http://www.pumatiger.de/haenger-verleih/mailer/atomicmailer.php", 
			oData, 
			function(data){
				alert(replaceUmlaute(data));
				$('div#messageLayer').remove();
			}, 
			"text"
		);

	}

}


// ------------------------------------------------------------------
// message layer

function displayMessage(sMsg) {

	var sMsgLayer = 
		'<!-- message layer -->' +
		'<div id="messageLayer" style="position:absolute; width:100%; height:' + getPageSize()[1] + 'px; z-index: 2; background-image: url(img/00_fullOverlay.gif)">' +     
		'</div>';

	$('div#globalContainer').append(sMsgLayer);
	
	alert(replaceUmlaute(sMsg));
	
	$('div#messageLayer').remove();

}



// ------------------------------------------------------------------
// preloader

function preload() {

	$('preload').append('<div id="google_iframe"></div>');

}