﻿/*
   	Class: Lxc::Client::JS::Class::Session
   	A class that manages the different Views.
   
   	About: License
   	Link Exchange Script

	Copyright (C) 2007 Erk Nissen - info@link-exchange-script.de
	This program is distributed under the terms and conditions of the GPL

	You can modify the link to 'www.link-exchange-script.de', but you are
	not allowed to remove it, as long as you don't have the direct permission 
	from info@link-exchange-script.de

	DON'T REMOVE THIS NOTICE!!
*/
// v.0.3
function classSession(){
	
	var title = null;
	var description = null;
	var keywords = null;

		
	// ##Private Attribute
	var linkObjektArray;
	var metaObjektArray;

	var checkErgebnis;
		
	// Werte für post
	// alle werte die in die db eigetragen werden sollen
	// -> werden spaehter zugewiesen
	var post_url_id = "";
	var post_bl_pruefen = true;
	var post_titel = "";
	var post_beschreibung = "";
	var post_link_url = "";
	var post_backlink_url = "";
	var post_kontakt_mail = "";
	var post_pagerank = "";
	var post_user_domain = "";

	// ##Public Attribute

	// ##Konstuktor
	readMeta();	
	

	// ## Public Methoden
	
	
	this.setLinks = function( linkRueckgabe ){
		linkObjektArray = eval("("+ linkRueckgabe +")");
	};
	
	this.setMeta = function( metaRueckgabe ){
		try{
			metaObjektArray = eval("("+ metaRueckgabe +")");
		}catch(e){
			alert('Fehler: Titel und Beschreibung Ihrer Webseiten konnten nicht uebernommen werden.');
			//alert('Ansicht: \n'+ metaRueckgabe);
		}
	};
	
	// Die folgende methode ist  dafuer verantwortlich den HtmlCode bereit zu stellen,
	// dieser wird automatisch und zufaellig aus den Meta-Daten dieser Seite erzeugt.
	this.setHtmlCode = function(){
// TODO: FEHLER wenn keywords nicht existieren, es sollte ausgewählt werden können ob die
// meta keywords oder speziell definierte keywords in der sprachdatei benutzt werden
		function getRandomKeyword(){
			var keywortArray = keywords.split(",");
			var r = Math.ceil(Math.random() * 1000) % keywortArray.length;
			//alert('Von den '+keywortArray.length+' Keywords wurde Nr.: '+r+' gewählt: '+keywortArray[r]);
			return keywortArray[r];
		}
		
		var code = "<a title=\""+ title +"\" href=\""+ session.getUrlId() +"\" target=\"_blank\" >"+ getRandomKeyword() +"</a>";
		document.getElementById("html_code_textarea").value = code;
	};

	this.resetPost = function(){
	//	post_bl_pruefen = "";
		post_titel = "";
		post_beschreibung = "";
		post_link_url = "";
		post_backlink_url = "";
		post_kontakt_mail = "";
		post_pagerank = "";
		post_user_domain = "";

		dojo.widget.byId("user_domain").setValue("");
		dojo.widget.byId("backlink_url").setValue("");
		dojo.widget.byId("titel").setValue("");
		document.getElementById("beschreibung").value = "";
		document.getElementById("radio_user_domain").checked = true;
		document.getElementById("pagerank").setAttribute("value","");
	};
	
	this.showSelected = function(){
		var w=dojo.widget.byId("testTable");
		if(w){
			var s=w.getValue();
			for(var index in linkObjektArray){
				var lo = linkObjektArray[index];
				if(lo.id == s){
					var x=dojo.widget.byId("backlink_url");
					post_backlink_url = lo.url;
					x.setValue( post_backlink_url );
					post_pagerank = lo.pr;
					// TODO: eigene Methode fuer pagerank
					document.getElementById("pagerank").setAttribute("value",post_pagerank);
				}
			}
		}
	};

	this.getTitelUndBeschreibungVonMeta = function getTitelUndBeschreibungVonMeta(){
		var t = dojo.widget.byId("titel");
		if(t){
			for(var index in metaObjektArray){
				var metaObjekt = metaObjektArray[index];
			 	var bez = metaObjekt.name;
			 	var str = metaObjekt.wert;

				bez = bez.toLowerCase();
				if( bez == "title" ){
					post_titel = str;
					t.setValue( post_titel );
				}
				if(bez == "description"){
					post_beschreibung = str;
					document.getElementById("beschreibung").value = post_beschreibung;
				}
			}
		}else{
			alert("widgets nicht gefunden");
		}
	};
	
	this.linksAlsDojoTabelleAusgeben = function linksAlsDojoTabelleAusgeben(){
			// TODO: tabelle nur erstellen wenn
			//		 von domainAnalyseFertig aufgerufen
			var w= dojo.widget.byId("testTable");
			// Alle linkObj des linkObjArray durchlaufen
			for(var index in linkObjektArray){
			 	var linkObjekt = linkObjektArray[index];
			 	var id = linkObjekt.id;
			 	var url = linkObjekt.url;
				var pr = linkObjekt.pr;

				var tr = document.createElement("tr");
				var td_0_id = document.createElement("td");
			 	td_0_id.innerHTML = id;

				// URL definieren
			 	var td_2_url = document.createElement("td");
			 	td_2_url.innerHTML = url;
				// Pagerank definieren
			 	var td_3_pr = document.createElement("td");
				td_3_pr.innerHTML = pr;
				tr.appendChild(td_0_id);
				tr.appendChild(td_2_url);
				tr.appendChild(td_3_pr);
				document.getElementById("tbody1").appendChild(tr);
			}

			if(w){
				w.render();
			}else{
				alert("no render");
			}
	};

	//	Löscht alle einträge aus der tabelle für links !
	this.linksAusDojoTabelleEntfernen = function(){
		// tbody knoten holen
		var tbodyObj = document.getElementById("tbody1");
		// wenn tbody kindknoten hat
		if( tbodyObj.hasChildNodes() ){
			// kindkonten holen und löschen
			var childObjArray = tbodyObj.getElementsByTagName("tr");
			var anzElem = childObjArray.length;

			while( anzElem > 0 ){
				var child = childObjArray[0];
				anzElem--;
				tbodyObj.removeChild( child );
			}
		}
	};

	// GETTER und SETTER

	this.setUrlId = function setUrlId(){
		post_url_id = document.getElementById("url_id").value;
	};

	this.setUserDomain = function setUserDomain(){
		var w = dojo.widget.byId("user_domain");
		post_user_domain = w.getValue();
	};

	this.setTitel = function setTitel(){
		var t = dojo.widget.byId("titel");
		if(t){
			post_titel = t.getValue();
		}else{
			alert("widgets nicht gefunden");
		}
	};

	this.setBeschreibung = function setBeschreibung(){
		post_beschreibung = document.getElementById("beschreibung").value;
	};

	this.setBacklinkUrl = function setBacklinkUrl(){
		post_backlink_url = dojo.widget.byId("backlink_url").getValue();
	};

	this.setLinkUrl = function setLinkUrl(){
		var r = document.getElementById("radio_user_domain");

		if( r.checked ){
			post_link_url = post_user_domain;
		}else{
			post_link_url = post_backlink_url;
		}
	};
	
	this.getUrlId = function(){return post_url_id;};
	this.getBlPruefen = function(){return post_bl_pruefen;};
	this.getUserDomain = function(){return post_user_domain;};
	this.getBeschreibung = function(){return post_beschreibung;};
	this.getLinkUrl = function(){return post_link_url;};
	this.getBacklinkUrl = function(){return post_backlink_url;};
	this.getKontaktMail = function(){return post_kontakt_mail;};
	this.getTitel = function(){return post_titel;};
	this.getPagerank = function(){return post_pagerank;};
	

	// ## Private Methoden
	
	
	

	function readMeta(){
		// Titel lesen
		title = document.getElementsByTagName('title')[0].innerHTML;
		if( !title ) {title = 'Kein Titel gefunden!';}

		// Beschreibung und Keywords lesen
		var htmlCollection = document.getElementsByTagName('meta');
		for(var idx = 0 ; idx < htmlCollection.length ; idx++){
			var tmp = htmlCollection[idx];
			var val = tmp.getAttribute('name');
			if(val){
				val = val.toLowerCase();
				if( val == 'keywords'){
					keywords = tmp.getAttribute('content');
				}else if( val == 'description'){
					description = tmp.getAttribute('content');
				}
			}
		}
	}
	

}
