/* ** Flexx-Hosting Sliding-Panel for Google+ and Facbook
   ** (c)2011 Thomas Braun
   **
   ** Main JavaScript file
   **
   **/   


// Inserting JScript dynamically into head
function getScript(url, success, insert) {
		var script     = document.createElement('script');
			script.src = url;
			script.text = insert;
		var head = document.getElementsByTagName('head')[0];
		done = false;
		script.onload = script.onreadystatechange = function() {
			if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {
				done = true;
				success();
				script.onload = script.onreadystatechange = null;
				head.removeChild(script);
			};
		};
		head.appendChild(script);
};
// Inserting Stylesheet dynamically into head
function getStyle(url) {
		var style       = document.createElement('link');
			style.id		= 'stylesheet';
			style.href  = url;
			style.rel   = 'stylesheet';
			style.type  = 'text/css';
			style.media = 'screen'
		var head = document.getElementsByTagName('head')[0];
		head.appendChild(style);
};
function GetHttpRequest() {
	if ( window.XMLHttpRequest ) // Gecko
		return new XMLHttpRequest() ;
	else if ( window.ActiveXObject ) // IE
		return new ActiveXObject("MsXml2.XmlHttp") ;
}

function IncludeTemplate(sId) {
	var obody = document.body.children[0];
	var odiv  = document.createElement( "div" );
		 odiv.id = sId;
	document.body.insertBefore(odiv, obody);
}

function InsertPanel() {
		// Insert Panel-HTML
		IncludeTemplate("flexxpanel");

		jQuery("#flexxpanel").load("/panel/panel.html" , function(response, status, xhr) {
			if (status == "error") {
				var msg = "Flexx-Sliding-Panel couldnt insertet. Errno: ";
				alert(msg + xhr.status + " " + xhr.statusText);
			} else {
				// Expand Panel
				jQuery("#open").click(function() {
					fbload();
					gpload();
					jQuery("div#panel").slideDown("slow");
				});	
				// Collapse Panel
				jQuery("#close").click(function(){
					jQuery("div#panel").slideUp("slow");	
				});		
				// Switch buttons from "Log In | Register" to "Close Panel" on click
				jQuery("#toggle a").click(function () {
					jQuery("#toggle a").toggle();
				});
				
				// Ajax Mail-Form
				jQuery("#sendmail").click(function(e){
					send_mail(e);
					return false;
				});

				// Run the google+Code
		//		gapi.plusone.go();
			}
		});
}

function gpload() {
     window.___gcfg = {
        lang: 'de-DE',
	parsetags: 'explicit'
      };

      (function() {
        var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
        po.src = 'https://apis.google.com/js/plusone.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
      })();
}
function fbload() {
	(function(d, s, id) {
		var js, fjs = d.getElementsByTagName(s)[0];
		if (d.getElementById(id)) {return;}
		js = d.createElement(s); js.id = id;
		js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1";
		fjs.parentNode.insertBefore(js, fjs);
	}(document, 'script', 'facebook-jssdk'));
	
}

function send_mail(e) {
	e.preventDefault();
	jQuery("#response").css("display", "hidden");
	jQuery("#response").html("");
	var valid_email = '';
	var valid_text  = '';
	var mail = jQuery("#email").val();
	var text = jQuery("#textarea").val();
	if (!mail.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i)) {
		valid_email = 'Bitte eine g&uuml;ltige eMail-Adresse eingeben.';
	}
	if (text.length<1) {
		valid_text = 'Der Nachrichtentext darf nicht leer sein.';
	}
	if ((valid_email=='')&&(valid_text=='')) {
		var datastr = 'c_email=' + mail + '&c_text=' + text;
		//jQuery("#response").css("display", "block");
		jQuery("#response").html("Nachricht wird verschickt...");
		jQuery("#response").fadeIn("slow");
		setTimeout("mailer('"+datastr+"')",2000);
	} else {
		var error="Fehler: ";
		if (valid_email!='') {
			error += valid_email;
			jQuery("#email").fadeIn(100).animate({top:"-=20px"},100).animate({top:"+=20px"},100).animate({top:"-=20px"},100).animate({top:"+=20px"},100).animate({top:"-=20px"},100).animate({top:"+=20px"},100);

		}
		if (valid_text!='') {
			if (valid_email!='') error += ' - '
			error += valid_text;
			jQuery("#textarea").fadeIn(100).animate({top:"-=20px"},100).animate({top:"+=20px"},100).animate({top:"-=20px"},100).animate({top:"+=20px"},100).animate({top:"-=20px"},100).animate({top:"+=20px"},100);
		}
		jQuery("#response").fadeIn("slow");
		jQuery("#response").html(error);
	}	
}

function mailer(datastr) {
	jQuery.ajax( {
		type: "POST",
		url: "/panel/include.php",
		data: datastr,
		cache: false,
		success: function(html) {
			jQuery("#response").fadeIn("slow");
			jQuery("#response").html(html);
			setTimeout('jQuery("#response").fadeOut("slow")',2000);
		}
	});
}



	// Insert Stylesheet
	getStyle('/panel/big.css');

	// Check and loead jQuery if it isn't allready defined
	if (typeof jQuery == 'undefined') {
        	getScript('/panel/jquery.js', function() {
        		if (typeof jQuery=='undefined') {
				;
        		} else {
				jQuery.noConflict();
	     			jQuery(document).ready(function(){
					InsertPanel();
				});
			}
		});
	} else {
		jQuery(document).ready(function(){
			InsertPanel();
		});
	}


