var PageToolStorage = {
	namespaceVisit: "visit",
	namespaceNotice: "notice",
	

	initialize: function(){
		
		this._clear(this.namespaceVisit);
		this._clear(this.namespaceNotice);

		this._save(pagekey, pagelink + ',' + pagetitle + ',' + pagelinkprint, this.namespaceVisit);

		this._printAvailableKeys(this.namespaceVisit);
		this._printAvailableKeys(this.namespaceNotice);

		
		var backLink = dojo.byId("tx_ddpagetoolsgeneralmatrix_pi1-back");
		dojo.connect(backLink, "onclick", this, this.goOneStepBack);

		dojo.connect(backLink, "onmouseover", function(e) {
			dojo.byId("tx_ddpagetoolsgeneralmatrix_pi1-back").style.color = "#333";
		});
		dojo.connect(backLink, "onmouseleave", function(e) {
			dojo.byId("tx_ddpagetoolsgeneralmatrix_pi1-back").style.color = "#999";
		});
		
		var noticeLink = dojo.byId("tx_ddpagetoolsgeneralmatrix_pi1-notice");
		dojo.connect(noticeLink, "onclick", this, this.saveToClipboard);

		dojo.connect(noticeLink, "onmouseover", function(e) {
			dojo.byId("tx_ddpagetoolsgeneralmatrix_pi1-notice").style.color = "#333";
		});
		dojo.connect(noticeLink, "onmouseleave", function(e) {
			dojo.byId("tx_ddpagetoolsgeneralmatrix_pi1-notice").style.color = "#999";
		});
		
		var adviseLink = dojo.byId("tx_ddpagetoolsgeneralmatrix_pi1-advise");
		dojo.connect(adviseLink, "onclick", this, this.showAdviseDialog);
		adviseLink.pagelink = pagelink;
		adviseLink.pagetitle = pagetitle;
		
		dojo.connect(adviseLink, "onmouseover", function(e) {
			dojo.byId("tx_ddpagetoolsgeneralmatrix_pi1-advise").style.color = "#333";
		});
		dojo.connect(adviseLink, "onmouseleave", function(e) {
			dojo.byId("tx_ddpagetoolsgeneralmatrix_pi1-advise").style.color = "#999";
		});
		
		var printLink = dojo.byId("tx_ddpagetoolsgeneralmatrix_pi1-print");
		dojo.connect(printLink, "onclick", this, this.showPrintPage);
		printLink.pagelink = pagelinkprint;
		
		dojo.connect(printLink, "onmouseover", function(e) {
			dojo.byId("tx_ddpagetoolsgeneralmatrix_pi1-print").style.color = "#333";
		});
		dojo.connect(printLink, "onmouseleave", function(e) {
			dojo.byId("tx_ddpagetoolsgeneralmatrix_pi1-print").style.color = "#999";
		});
	
		var clearVisitLink = dojo.byId("tx_ddpagetoolsgeneralmatrix_pi2_visit-clear");
		dojo.connect(clearVisitLink, "onclick", this, this.clearNamespaceVisit);
		
		var clearNoticeLink = dojo.byId("tx_ddpagetoolsgeneralmatrix_pi2_notice-clear");
		dojo.connect(clearNoticeLink, "onclick", this, this.clearNamespaceNotice);
		
		if(typeof dijit.byId('mainTabContainer') != "undefined"	&& dijit.byId('mainTabContainer') != null){
		
			dijit.byId('mainTabContainer').tablist.getChildren()[0].innerDiv.style.backgroundImage='url(fileadmin/css/gfx/tabChronicOn.gif)';
			dijit.byId('mainTabContainer').tablist.getChildren()[0].innerDiv.style.backgroundRepeat='no-repeat';
			dijit.byId('mainTabContainer').tablist.getChildren()[0].innerDiv.style.paddingLeft='35px';
			
			dijit.byId('mainTabContainer').tablist.getChildren()[1].innerDiv.style.backgroundImage='url(fileadmin/css/gfx/tabClipOff.gif)';
			dijit.byId('mainTabContainer').tablist.getChildren()[1].innerDiv.style.backgroundRepeat='no-repeat';
			dijit.byId('mainTabContainer').tablist.getChildren()[1].innerDiv.style.paddingLeft='35px';
	
	
			var tc = dijit.byId('mainTabContainer');
			dojo.forEach(tc.tablist.getChildren(), function(w) {
				dojo.connect(w, '_onMouse', w, 'onClick');
			});
				
			dojo.connect(tc,"selectChild",function(arg){
						if (arg.id == 'visitPages') {
							dijit.byId('mainTabContainer').tablist.getChildren()[0].innerDiv.style.backgroundImage='url(fileadmin/css/gfx/tabChronicOn.gif)';
							dijit.byId('mainTabContainer').tablist.getChildren()[1].innerDiv.style.backgroundImage='url(fileadmin/css/gfx/tabClipOff.gif)';
						} else {
							dijit.byId('mainTabContainer').tablist.getChildren()[0].innerDiv.style.backgroundImage='url(fileadmin/css/gfx/tabChronicOff.gif)';
							dijit.byId('mainTabContainer').tablist.getChildren()[1].innerDiv.style.backgroundImage='url(fileadmin/css/gfx/tabClipOn.gif)';
						}
				      });
		}

	},

	
	showAdviseDialog: function(e) {
		var params = e.target;
		var dialog = dijit.byId("form_recommend");
		dialog.show(params.pagelink, params.pagetitle);
	},

	saveToClipboard: function() {
		this._clear(this.namespaceNotice);
		this._save(pagekey, pagelink + ',' + pagetitle + ',' + pagelinkprint, this.namespaceNotice);
		this._printAvailableKeys(this.namespaceNotice);
	},

	saveNoticeToClipboard: function(e) {
		var params = e.target;
		var jetzt = new Date();
		var newkey = parseInt(jetzt.getTime() / 1000); // PHP Timestamp und JS Timestamp anpassen
		this._clear(this.namespaceNotice);
		this._save(newkey, params.pagelink + ',' + params.pagetitle + ',' + params.pagelinkprint, this.namespaceNotice);
		this._printAvailableKeys(this.namespaceNotice);
	},

	removeKeyFromClipboard: function(e) {
		var params = e.target;

		var keys = dojo.fromJson(dojo.cookie(this.namespaceNotice));
				
		if (this._typeof(keys) == 'array')    { 

			for (var i = 0; i < keys.length; i++){

				if (keys[i].key == params.key) {
					keys.splice(i,1);				
					dojo.cookie(this.namespaceNotice, dojo.toJson(keys), { expires: 5 });
					break;					
				}
			}
		}
		
		//dojox.storage.remove(params.key, this.namespaceNotice);

		this._printAvailableKeys(this.namespaceNotice);
	},

	showPrintPage: function(e) {
		var params = e.target;
		// window.location.href = params.pagelink;	
		window.open(params.pagelink,'print','toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes');
	},

	goOneStepBack: function() {

		history.back(-1);
//		lastvalue = this._getLastValue(this.namespaceVisit,1);
//		if(typeof lastvalue != "undefined"
//			&& lastvalue != null){
//			linkarray = lastvalue.split(',');
//			window.location.href = linkarray[0];
//		}
		
	},

	clearNamespaceVisit: function() {
		// Cookie Handling start	
		dojo.cookie(this.namespaceVisit, null, {expires: -1});
		// Cookie handling end

		// Flash storage handling start
//		dojox.storage.clear(this.namespaceVisit);	
		// Flash storage handling end
		this._printAvailableKeys(this.namespaceVisit);
	},

	clearNamespaceNotice: function() {
		// Cookie Handling start	
		dojo.cookie(this.namespaceNotice, null, {expires: -1});
		// Cookie handling end

		// Flash storage handling start
//		dojox.storage.clear(this.namespaceNotice);	
		// Flash storage handling end

		this._printAvailableKeys(this.namespaceNotice);
	},

	_clear: function(namespace){
		
		lastkey = this._getLastKey(namespace);  
		if(typeof lastkey != "undefined"
			&& lastkey != null){

			var jetzt = new Date();
			nowM24 = parseInt(jetzt.getTime() / 1000); // PHP Timestamp und JS Timestamp anpassen
			nowM24 = parseInt(nowM24 - 86400); // Save Data 24 Hour  -- TODO Remove 24 Hour older keys in the Storage

			if (nowM24 > lastkey) {
				// Cookie Handling start	
				dojo.cookie(namespace, null, {expires: -1});
				// Cookie handling end
				
				// Flash storage handling start
// 				dojox.storage.clear(namespace);
				// Flash storage handling end
			}
		}
	},

	_save: function(key, value, namespace){
		var self = this;

		// Flash Storage start
		//var saveHandler = function(status, keyName, namespace){
			//if(status == dojox.storage.FAILED){
				//alert("You do not have permission to store data for this web site.");
			//}else if(status == dojox.storage.SUCCESS){
				//if(typeof namespace != "undefined"
					//&& namespace != null){
				//}		
			//}
		//};
		// Flash storage end

		try{
			if (value != this._getLastValue(namespace,0)) {

				// Cookie handling start
				var keys = dojo.fromJson(dojo.cookie(namespace));
				
				if (this._typeof(keys) != 'array')    { 
					var keys = new Array();
					var index = 0;

				} else {
					var index = keys.length;
				}


				keys[index] = new Object();
				keys[index]['key'] = key;
				keys[index]['values'] = value;
				

				dojo.cookie(namespace, dojo.toJson(keys), { expires: 5 });
				// Cookie handling end

				// Flash Storage start
//				dojox.storage.put(key, value, saveHandler, namespace);
				// Flash Storage end
			}
		}catch(exp){
			alert(exp);
		}
	},
	
	_printAvailableKeys: function(namespace){
		if (namespace == this.namespaceVisit) {
			var directory = dojo.byId("tx_ddpagetoolsgeneralmatrix_pi2_visit");
			var wrapper = 'tx_ddpagetoolsgeneralmatrix_pi2_visit_item';
			var wrapperLink = 'tx_ddpagetoolsgeneralmatrix_pi2_visit_item_link';
			var wrapperTools = 'tx_ddpagetoolsgeneralmatrix_pi2_visit_item_tools';
			var wrapperTool = 'tx_ddpagetoolsgeneralmatrix_pi2_visit_item_tool';
			var wrapperClear = 'tx_ddpagetoolsgeneralmatrix_pi2_visit_item_tool_clear';
			
		}
		
		if (namespace == this.namespaceNotice) {
			var directory = dojo.byId("tx_ddpagetoolsgeneralmatrix_pi2_notice");
			var wrapper = 'tx_ddpagetoolsgeneralmatrix_pi2_notice_item';
			var wrapperLink = 'tx_ddpagetoolsgeneralmatrix_pi2_notice_item_link';
			var wrapperTools = 'tx_ddpagetoolsgeneralmatrix_pi2_notice_item_tools';
			var wrapperTool = 'tx_ddpagetoolsgeneralmatrix_pi2_notice_item_tool';
			var wrapperClear = 'tx_ddpagetoolsgeneralmatrix_pi2_notice_item_tool_clear';
		}
		
		if(typeof directory != "undefined"	&& directory != null){
			directory.innerHTML = "";
			
			// add new ones
			var availableKeys;

			availableKeys = dojo.fromJson(dojo.cookie(namespace));
	

			//availableKeys = dojox.storage.getKeys(namespace);
			//availableKeys.sort();


			if (this._typeof(availableKeys) == 'array')    { 
				availableKeys.reverse();
				for (var i = 0; i < availableKeys.length; i++){
		
					// get the value
					var results = '';

					//results = dojox.storage.get(availableKeys[i], namespace);
					if(typeof availableKeys[i].values != "undefined" && availableKeys[i].values != null){
						results = availableKeys[i].values;
					}
	
					var linkarray = results.split(',');
					
					if(typeof linkarray[1] != "undefined"
						&& linkarray[1] != null){
	
						var linkNode = document.createElement("a");
						linkNode.appendChild(document.createTextNode(linkarray[1]));
						linkNode.href = linkarray[0];
	
						var wrapLinkNode = document.createElement("div");
						wrapLinkNode.appendChild(linkNode);
						wrapLinkNode.id = wrapperLink;
						
						if (namespace == this.namespaceVisit) {
							var tool1Node = document.createElement("img");
							tool1Node.src = 'typo3conf/ext/dd_pagetools_general_matrix/res/ptClip.gif';
							tool1Node.id = wrapperTool;
							tool1Node.pagelink = linkarray[0];
							tool1Node.pagetitle = linkarray[1];
							tool1Node.pagelinkprint = linkarray[2];
							dojo.connect(tool1Node, "onclick", this, this.saveNoticeToClipboard);
							
							var tool2Node = document.createElement("img");
							tool2Node.src = 'typo3conf/ext/dd_pagetools_general_matrix/res/ptSend.gif';
							tool2Node.id = wrapperTool;
							tool2Node.pagelink = linkarray[0];
							tool2Node.pagetitle = linkarray[1];
							dojo.connect(tool2Node, "onclick", this, this.showAdviseDialog);
	
							var tool3Node = document.createElement("img");
							tool3Node.src = 'typo3conf/ext/dd_pagetools_general_matrix/res/ptPrint.gif';
							tool3Node.id = wrapperTool;
							tool3Node.pagelink = linkarray[2];
							dojo.connect(tool3Node, "onclick", this, this.showPrintPage);
						}
		
						if (namespace == this.namespaceNotice) {
							var tool1Node = document.createElement("img");
							tool1Node.src = 'typo3conf/ext/dd_pagetools_general_matrix/res/ptTrash.gif';
							tool1Node.id = wrapperTool;
							tool1Node.key = availableKeys[i].key;
							dojo.connect(tool1Node, "onclick", this, this.removeKeyFromClipboard);
							
							var tool2Node = document.createElement("img");
							tool2Node.src = 'typo3conf/ext/dd_pagetools_general_matrix/res/ptSend.gif';
							tool2Node.id = wrapperTool;
							tool2Node.pagelink = linkarray[0];
							tool2Node.pagetitle = linkarray[1];
							dojo.connect(tool2Node, "onclick", this, this.showAdviseDialog);
	
							var tool3Node = document.createElement("img");
							tool3Node.src = 'typo3conf/ext/dd_pagetools_general_matrix/res/ptPrint.gif';
							tool3Node.id = wrapperTool;
							tool3Node.pagelink = linkarray[2];
							dojo.connect(tool3Node, "onclick", this, this.showPrintPage);
						}
		
		
						var clearNode = document.createElement("div");
						clearNode.id = wrapperClear;
	
						wrapItemNode = document.createElement("div");
						wrapItemNode.appendChild(wrapLinkNode);
						wrapItemNode.appendChild(tool1Node);
						wrapItemNode.appendChild(tool2Node);
						wrapItemNode.appendChild(tool3Node);
						wrapItemNode.id = wrapperTools ;
		
						//wrap the Item
						var wrapNode = document.createElement("div");
						wrapNode.appendChild(wrapItemNode);
						wrapNode.id = wrapper ;
					
						directory.appendChild(wrapNode);
					}
				}
			}
		}
	},
	
	_getLastValue: function (namespace, steps) {
		var availableKeys;
		var results = '';

//		availableKeys = dojox.storage.getKeys(namespace);
//		availableKeys.sort();


		try {
			availableKeys = dojo.fromJson(dojo.cookie(namespace));

			if (this._typeof(availableKeys) == 'array')    { 

				availableKeys.reverse();
				
				for (var i = 0; i < availableKeys.length; i++){
						
					if (i >= steps) {
						// get the value
						var results;
						//results = dojox.storage.get(availableKeys[i], namespace);
						results = availableKeys[i].values;
						
						// jsonify it if it is a JavaScript object
						if(typeof results != "string"){
							results = dojo.toJson(results);
						}
		
						var linkarray = results.split(',');
						
						if(typeof linkarray[1] != "undefined"
							&& linkarray[1] != null){
							break;
						}
					}
				}
			}

		}catch(exp){
		
		}		
		
		return results;
		
	},
	
	_getLastKey: function (namespace) {
		var availableKeys;
		var results = '';

		// Flash storage handling start
//		availableKeys = dojox.storage.getKeys(namespace);
//		availableKeys.sort();
		// Flash storage handling end

		try {
			availableKeys = dojo.fromJson(dojo.cookie(namespace));
	
			if (this._typeof(availableKeys) == 'array')    { 
				availableKeys.reverse();
				
				for (var i = 0; i < availableKeys.length; i++){
		
						// get the value
						var results;
						results = availableKeys[i].key;
		  				//results = availableKeys[i];
		
						break;
						
				}
			}
		}catch(exp){
		
		}		
		
		return results;
		
	},
	
	
	_typeof: function (obj) {
		if ( typeof(obj) == 'object') {
			if (obj.length)
				return 'array';
			else
				return 'object';
		} else
			return typeof(obj);
	}	

	
};


// FLASH
//if(dojox.storage.manager.isInitialized() == false){ 
//	dojo.connect(dojox.storage.manager, "loaded", PageToolStorage, PageToolStorage.initialize);
//}else{
	dojo.connect(dojo, "loaded", PageToolStorage, PageToolStorage.initialize);
//}

