/**
 * Transporter – Informationen bewegen, www.transporter.at, 2009
 * @author t.wanner
 */

var ajaxMode = 0;
var ajaxFunction = '';
var ajaxData = '';

/* !flashbase funktionen
 ****************************************************/
function loadPage(strText){
	//alert('[loadPage] '+strText);
    setAjaxMode(1,'loadPage',strText);
	
    window.softScrollTarget = "#seite";
	ajaxloaderstuff('index.php?id=' + strText, 'seite', 'type=2');
    returntoflash = 'ok';
    return (returntoflash);
}

function javascript_to_flash(texttoflash){
    var textfromflash = thisMovie("projektfilter").showPageInfo(texttoflash);
    return (true);
}

function thisMovie(movieName){
    var isIE = navigator.appName.indexOf("Microsoft") != -1;
    return (isIE) ? window[movieName] : document[movieName];
}

// ********* ajaxloader nur für aufrufe aus flash

// projektlink aufgerufen
function doAlert(message){
	alert('[doAlert] '+message);
}


//load print version for project filter page
function loadPrintVersion (){
	if (aktuelleProjektPageFuerDruck != '') {
		//window.location.href=aktuelleProjektPageFuerDruck;
		window.open(aktuelleProjektPageFuerDruck, 'ATP Print');
		return false;
	} else return true;
}


// ******** ajaxloader nur für aufrufe aus html

// normaler seitencontent aufruf
function ajaxloader(link, target, location) {
	
	if(window.ajaxMode==0) return true;
	setAjaxMode(3,'ajaxloader',link);
	//alert('[ajaxloader] '+link);
	
    if (target == undefined) target = "seite";
    if (location == undefined) location = "#alles";

    window.link = link;
    window.projectID = 0
    ajaxfcontainer = document.getElementById("fcontainer");
	
    ajaxloaderstuff(link, target, "");

    window.softScrollTarget = location;
    return false;
}

// ************

// diese funktion verwalten die ladeprozedur 
function ajaxloaderstuff(link, target, urlparams){
    // uid lokal initialisieren
    window.link = link;
    window.urlparams = urlparams;
    seiteladen(link, target, urlparams);
}

// seiteladen lädt den inhalt per ajax
function seiteladen(link, target, urlparams){
	//alert("[seiteladen] "+ urlparams);
    new Ajax.Updater({
        success: target
    }, link, {
        method: 'get',
        parameters: '?' + urlparams,
		evalScripts: true,
        onFailure: function(){
            ajaxErrorIn();
        },
        onSuccess: function(){
        	//alert("[onSuccess] "+ window.ajaxMode + ' :: '+window.ajaxFunction + ' :: ' + window.ajaxData);
            if (window.ajaxMode>0) {
            	historyManager.setValue('dyncont', 0, window.ajaxFunction+'::'+window.ajaxData);
            }
        },
        onComplete: function(){
            // ladeinfo aus
           /*
            * Hyphenator.js muss eingebunden sein
		    if (Hyphenator.isBookmarklet()) {
                Hyphenator.hyphenateDocument();
            }
            Hyphenator.setMinWordLength(8);
            Hyphenator.run();
            */
            Form.Observer;
			
			//reinitialize Protofish
			new ProtoFish('navi', '250', 'naviactive', true);
            
			//suchblur();
            //IDOut('ajaxLoader');
			
			if (window.softScrollTarget != "") {
//alert(window.softScrollTarget);
				softscroll(window.softScrollTarget);
			}
        }
    });
}


/* softscroll (benötigt prototype.js und scriptaculous.js?load=effects)
 ****************************************************/


var isSafari = !!navigator.userAgent.match(/Apple.*Safari/)

function setAjaxMode(mode,func,data){
	//alert("[dyncont onMatch] "+mode+' :: '+func+' :: '+data);
    window.ajaxMode = mode;
    window.ajaxFunction = func;
    window.ajaxData = data;
}

function initializeHistoryManager(){
	
	this.historyManager = new ProtoHistoryManager();
	historyManager.initialize();
	ajaxDataClass = new ajaxClass(this.historyManager);	
	this.historyManager.start();

	
}

var ajaxClass = Class.create();

ajaxClass.prototype = {
		initialize : function(historyManager) {
				this.proHistory = historyManager.register( // arguments are (key, defaults, onMatch, onGenerate, regexp, options)
					// the unique key of the registered module
					'dyncont',
					// Array with default values, here index 0 is the current page index
					[0],
					// onMatch, callback when the state changed
					function(values) {
						var data=String(values[0]);
						//alert("[dyncont onMatch] "+values[0]+' :: '+Object.isNumber(Number(values[0])));
						if(values[0]!=0) {
							var info = data.split('::')
							eval(info[0])(info[1]);
							//alert("[dyncont onMatch] "+info[0]+' :: '+info[1]);
						}
					}.bind(this),
					// onGenerate, callback that returns the string for the hash
					function(values) {
						//alert("[dyncont onGenerate] " + values);
					    return 'dyncont('+values+')';
					},
					// RegExp for the hash value, works
					/dyncont\((.+)\)/ ///dyncont\((\.+)\)/ // the regexp to match "page-index(0)"
				)
		}
}

function initialize(){
	setAjaxMode(0);
    initializeHistoryManager();
    //suchblur();
}
