/*

JS für Analog in the Box
Klickmeister 03.2011
www.klickmeister.de
c.noss@klickmeister.de
s.elghammaz@klickmeister.de

v1.0.0 - 08.03.2011 - cn: Urversion

######################################################### */

/* Conf
######################################################### */

var pfad_h1_bilder = "/images/headlines";
var text_login = "To proceed, login using the information we sent to you in your order confirmation.";
var fadingtime = 500;

var overlay_modal_html = "<div id=\"overlay_modal\"></div>";
var overlay_modal = false;
var overlay_modal_close = false;
var ajax_js_target = false;

/* Functions
######################################################### */

/* zeigt den Dialog zum ändern der persönlichen Daten an 
---------------------------------------- */
function change_my_data( obj ){
	ajax_req( obj, "my_account_changedata.php", "html", "modal");
}

/* ersetzt Headlines durch Grafiken
---------------------------------------- */
function set_replace(){
	
	var forum_result = document.location.href.search(/forum/);
	if (forum_result == -1){
	
	
		$('h1').each(function(index) {
			var text = $(this).text() + ".png";
			var fn = text.replace(/ /g, "_");
			$(this).html("");		
			$(this).append('<img src="'+pfad_h1_bilder + "/h1_" + fn+'" alt="'+text+'" />');
		});
		$('h5').each(function(index) {
			var text = $(this).text() + ".png";
			var fn = text.replace(/ /g, "_");
			$(this).html("");		
			$(this).append('<img src="'+pfad_h1_bilder + "/h1_" + fn+'" alt="'+text+'" />');
		});
	}
}

/* blendet das Raster ein
---------------------------------------- */
function raster(){
	
	$('body').append('<p id="raster"></p>');
	
	$('#raster').dblclick(function() {
		if($('#wrap').hasClass('raster')){
			$('#wrap').removeClass('raster');
			$('#header').removeClass('raster');
		}else{
			$('#wrap').addClass('raster');
			$('#header').addClass('raster');
		}
	});
}

/* lädt eine Hintergrundgrafik via AJAX 
---------------------------------------- */
/*
function set_bg(){

	$.ajax({
		url: '/scripts/get_bggrafik.php',
		success: function(data) {
			$('#content').css("background-image","url('"+data+"')");
		}
	});

}
*/

/* IE7 Clear Bugfix
---------------------------------------- */
function ie_clear_bugfix( id ){

	function do_clear( selektor ){
		$(selektor).append('<div class="ie_clear" style="clear:both; display:inline;">&nbsp;</div>');
	}
	
	var selektor = ".zeile";
	if(id){ selektor = "#" + id + " .zeile"; }
	do_clear(selektor);
	
	selektor = ".zeile_ohne";
	do_clear(selektor);
}


/* Führt einen Ajax Request aus
---------------------------------------- */
function ajax_req(obj, url, aktion, ret_id, type){
	
	// obj: ist das Objekt hat die Funktion aufgerufen, z.B. ein Formular
	// url: naja, die URL zum Skript halt
	// aktion: ...noch nicht belegt
	// ret_id: [id, modal] ist die id des Objekts, wo der Response landen soll. 
	// type: GET, POST default ist GET

	
	// Vars setzen
	if(!type){ type = "GET"; }
	var data = false;
	if(type == "POST"){ data= $("#"+obj.id).serialize(); }

	$.ajax({
		url: url,
		cache: false,
		type: type,
		data: data,
		success: function(response){

			// Bei modalem Overlay die Antwort da rein packen und das Overlay zeigen
			if(ret_id == "modal"){
				$("#overlay_modal").html(response);
				overlay("show", "overlay_modal", false);
				
			// Bei angegebener id den Container ausblenden, dann den Response einbinden und den Container wieder einblenden
			}else{
				$("#"+ret_id).fadeOut(fadingtime, function() {
					$(this).html(response);
					$(this).fadeIn(fadingtime);
				});
			}
		},
		error:function (xhr, ajaxOptions, thrownError){
			alert(xhr.status);
			alert(thrownError);
		},
		complete: function(response){
		}	
	});
	
	return false;
}


/* initialisiert und steuert die Overlays
---------------------------------------- */
var do_reload = false;
var do_redirect = false;

function overlay( aktion, id, closeOnClick ){

	// aktion: init, show
	// id: [id] des Zielcontainers
	// closeOnClick: true, false -> kann man das Overlay wegklicken indem man irgendwo hin klickt?
	
	// init: HMTML Wraps addieren
	if(aktion == "init"){
		$('body').append(overlay_modal_html);
			
	}
	
	// show: Overlay zeigen oder verstecken
	else if (aktion == "show"){

		// is das Overlay schon da? dann nur zeigen
		if(overlay_modal){  
			overlay_modal.overlay().load();
			
		// muss das Overlay noch erzeugt werden?
		}else{

			overlay_modal = $("#" + id).overlay({
				top: 260,
				mask: {	color: "#000000", loadSpeed: 350, opacity: 0.6 },
				closeOnClick: closeOnClick,
				load: true
			});
		}

		check_modal_close();
	
	}
	
}




/* prüft und ergänzt ggf das Modal um den Close Button
---------------------------------------- */
function check_modal_close(){
	if($("#close").length == 0){
		$("#overlay_modal").append("<button class=\"close btn\" id=\"close\" />");
	}
	
	// Close Button mit Funktion versorgen
	overlay_modal_close == $("#close").click(function(e) {
		overlay_modal.overlay().close();
		
		if(do_reload){
			location.reload();
			do_reload = false;
		}
		if(do_redirect){
			var myacc_result = document.location.href.search(/my_account\.php/);
			var confirm_result = document.location.href.search(/index\.php\?confirm/);
			var force_logout_result = document.location.href.search(/index\.php\?mode/);
					
			if (myacc_result != -1 || confirm_result != -1 || force_logout_result != -1) {
				location.replace('/index.php');
				do_redirect = false;
			}
			else {
				location.reload();
				do_reload = false;
			}
		}	
	});
}

/* zeigt ein Alert in der Modalbox
---------------------------------------- */
function alert_modalbox( headline, text ){
	overlay("show", "overlay_modal", false);
	$("#overlay_modal").html("<h2>"+headline+"</h2><p>" +text+"</p>");
	check_modal_close();
}

/* lädt die Seite neu
---------------------------------------- */
function reload(){
	location.reload();
}


/* lädt JS nach
---------------------------------------- */
var merken_js = false;

function load_js( url ){
	
	var merken = url.replace(/[^a-z]/g, "");

	if(!merken_js){
			
		var snode = document.createElement('script');
		snode.setAttribute('type','text/javascript');
		snode.setAttribute('src', url );
		$("head").append(snode);
	
		merken_js = true;
	}	
}

/* lädt CSS nach
---------------------------------------- */

var merken_css = false;

function load_css( url ){
	
	var merken = url.replace(/[^a-z]/g, "");

	if(!merken_css){
		var snode = document.createElement('link');
		snode.setAttribute('rel','stylesheet');
		snode.setAttribute('href', url );
		$("head").append(snode);
		
		merken_css = true;
	}
}

/* AJAX Aufruf für das Login
---------------------------------------- */
function login( obj, force_logout ){
	ajax_js_target = obj.id;
	
	ajax_req( obj, "loginout.php?force_logout=" + force_logout, "html", "modal");
	return false;
}


/* todo: niklas konstrukte, nicht abgesegnet.
---------------------------------------- */
function confirm ( obj, action, token ){
	ajax_js_target = obj.id;
	ajax_req( obj, "/confirm.php?action=" + action + "&token=" + token, "html", "modal");
	return false;
}


function contact_support ( obj, subject, identifier ){
	ajax_js_target = obj.id;
	ajax_req( obj, "/contact_support.php?subject=" + subject + "&object=" + identifier, "html", "modal", "post");
	return false;
}



function contact_form_public (obj, form_name, form_mail, form_message) {
	ajax_js_target = obj.id;
	ajax_req( obj, "contact_public_form.php?name=" + form_name + "&mail=" + form_mail + "&msg=" + form_message, "html", "modal");
	return false;
}



/* EOF niklas konstrukte





/* Funktionen rund um die Autorisierung
---------------------------------------- */
var tool_merken = false;
var authorize_response_merken = false;

function do_authorize( obj, tool ){
	tool_merken = tool;
	authorize_response_merken = obj.id;
	ajax_req( obj, "/aut_upload_form.php?tool=" + tool, "html", "modal");
	return false;
}

function authorize_response( responseJSON ){
	$("#overlay_modal").html("<p class=\"loading\">Please wait while your challenge file is beeing processed.</p>");
	ajax_req( $(authorize_response_merken), "/aut_create_auth_response.php?token=" + responseJSON.aut_token, "html", "overlay_modal");
	return false;
}

function authorisation_finished( feedback, feedback_overlay ){
	
	if(feedback_overlay){
		$("#overlay_modal").html(feedback_overlay);
		check_modal_close();
	}else{
		overlay_modal.overlay().close();
	}
	
	/*todo: auskommentiert, brauchen wir nicht?
	$("#" + authorize_response_merken).fadeOut("slow", function() {
	    // Animation complete.
	    //$(this).remove();
	});
	*/
	if(feedback){
		$("#info_" + tool_merken).html( feedback );
	}
	return false;
}

/* Zeigt die DL Produkte
---------------------------------------- */
function do_download( obj, tool ){
	tool_merken = tool;
	authorize_response_merken = obj.id;
	ajax_req( obj, "/download.php?tool=" + tool, "html", "modal");
	return false;
}


/* Zeigt die DL Produkte todo: niklas konstrukt, noch nicht abgesegnet.
---------------------------------------- */
function do_download_aut( obj, tool ){
	tool_merken = tool;
	authorize_response_merken = obj.id;
	ajax_req( obj, "/aut_download.php?tool=" + tool, "html", "modal");
	return false;
}


/* Main
######################################################### */

$(document).ready(function() {
	
	// †berschriften ersetzen
	set_replace();
	
	// Raster einbinden
	raster();
	
	// Hinergrundbild setzen
	// set_bg();
	
	// Overlays initialisieren
	overlay("init");

	var browser = getBrowser();
	if((browser == "IE6") || (browser == "IE7")){
		ie_clear_bugfix();
	}
	
	// ist ueberhaupt JS akiviert
	// BETA: das gefaellt mir noch nicht (cn)
	if($("#returnmsg").length > 0){ 
		$('#login_form').fadeIn();
		$("#returnmsg").text(text_login);
	}
		
});


