// Constante definissant la racine du site
var WEBROOT = "";
var IMGROOT = "/img";

var EuroDNS = {};

var searchInProgress=false;


EuroDNS.Site = {

	error_box: 'error_box',
	
	init: function()
	{
		EuroDNS.Site.start();
		
		if ($('restrictions')||$('smallCart'))
		{
			EuroDNS.Cart.start();
		}
		
		if ($('form_bloc'))
		{
			EuroDNS.Formular.start();
		}
		
		if ($('folder_box'))
		{
			EuroDNS.FolderManager.start();
		}
		
		if ($('searchBox'))
		{
			EuroDNS.DomainSearch.start();
		}
	},
	start: function()
	{
		this.showJSNeededElements();
	},	
	toggleHelpSection: function (element)
	{			
		var element = $(element);
	
		if (element.classNames().include('helpSectionHidden'))
		{
			element.removeClassName('helpSectionHidden');
			element.addClassName('helpSectionShown');
		}
		else
		{
			element.removeClassName('helpSectionShown');
			element.addClassName('helpSectionHidden');
		}
		
	},
	showJSNeededElements: function()
	{
		$$('.jsEnabled').each(function(element){
			element = $(element);
			if (element.classNames().include('jsEnabledBlock'))
				{element.setStyle({display:'block'});}
			else
				{element.setStyle({display:'inline'});}
		});
	},
	showLoginBox: function()
	{
		var win = new Window(
				{
					id: "domain_window",
					className: "eurodnslogin", 
					title: '',
					maximizable: false, 
					resizable: false, 
					minWidth: 500,
					minHeight: 200, 
					destroyOnClose: true, 
					draggable:false, 
					wiredDrag: false,
					url: '/ajax/users/login'
				});
		//win.setAjaxContent(, {method: 'get', evalScripts: true}, true, true);
		win.show();
		win.updateHeight();
	},
	initFilterBox: function()
	{
		if (null !== $('form_filters')){$('form_filters').hide();}
	},
	
	
	
	initDefaultMenu: function(element)
	{		
		var element = $(element);
						
		if (element.className.match(/bluemenu/))
		{
			var className = 'blue';
		}
		else if (element.className.match(/goldmenu/))
		{
			var className = 'gold';
		}		
		
		var box = element.up('.'+className+'menu').down('ul');
							
		if (box)
		{
			box.toggle();														
			element.src = '/img/roundcont/' + ((Element.visible(box)) ?  'collapse' : 'expand') + '_'+className+'.png';								
		}
	},
	showLoadingMessage: function()
	{
		$('error_box').innerHTML = EuroDNS.Site.getLoadingMessage();//'<img src=\"'+ IMGROOT +'/ajax-loader.gif\" />&nbsp;'+"Loading ... please wait";
	}, 	
	getLoadingMessage: function()
	{
		return '<img src=\"'+ IMGROOT +'/ajax-loader.gif\" />&nbsp;';
	}, 
	
	hideLoadingMessage: function(){
		$('error_box').innerHTML = "&nbsp;";
	},
	
	toggleFilterBox: function(){
		$('form_filters').toggle();
	}, 
	
	increase: function(element, value, minimum, maximum){
		element = $(element);
		if (element && element.tagName.toLowerCase() == 'input'){
			if (element.getValue().strip() === ""){element.value = 10;}
			else if (element.getValue().match(/\d/)){
				element.value = Math.floor(element.value) + Math.floor(value);
				if (element.getValue() <= minimum) { element.value = minimum; }
				if (element.getValue() >= maximum) { element.value = maximum; }
			}
		}
	},
	
	highlightFlashMessage: function(time){
		$(EuroDNS.Site.error_box).setStyle({display:'block'});
		new Effect.Highlight(EuroDNS.Site.error_box);
		setTimeout('$(EuroDNS.Site.error_box).hide();', time * 1000);
	}
};

EuroDNS.Cart = {
	start: function(){
		if($('restrictions')){this.hideRestrictions();}
		this.hideDivIfJsEnabled('displayJavascriptDisabledID');
	}, 

	hideDivIfJsEnabled: function (myElement){
		if (null !== $(myElement)){	$(myElement).hide();}
	},
	
	hideRestrictions: function(){
		$$('div.tooltip').each(
				function(p){
					var prev = p.previous();
					p.hide();
					prev.observe('click', function(event){
						var restrict = $('restrictions');
						restrict.hide();
						var pid = p.up().up().id;
						var temp_pid = pid.split("_");
						var nomcomplet = "";
						for (i=1 ; i < temp_pid.length; i++) {
							nomcomplet += temp_pid[i];
							if (i < (temp_pid.length-1))
								nomcomplet += ".";
						}
						restrict.innerHTML = "<h5>"+nomcomplet+"</h5>"+p.innerHTML;
						restrict.toggle(); 
					});
					prev.setStyle({cursor: "pointer"});
				}
		);		
		
	}, 

	showRestriction: function(tld, obj){
		var obj = null;
		if(document.getElementById){
			obj = document.getElementById('restrictions_box');
		}else if(document.all){
			obj = document.all['restrictions_box'];
		}else if(document.layers){
			obj = document.layers['restrictions_box'];
		}
		var divStyleRef = (obj && obj.style) || obj;
		
		var windowState = (function(){
			var readScroll = {scrollLeft:0,scrollTop:0};
			var readSize = {clientWidth:0,clientHeight:0};
			var readScrollX = 'scrollLeft';
			var readScrollY = 'scrollTop';
			var readWidth = 'clientWidth';
			var readHeight = 'clientHeight';
			function otherWindowTest(obj){
				if((document.compatMode) && (document.compatMode == 'CSS1Compat') && (document.documentElement)) {
					return document.documentElement;
				} else if(document.body) {
					return document.body;
				}else{
					return obj;
				}
			};
			if((typeof this.innerHeight == 'number') && (typeof this.innerWidth == 'number')){
				readSize = this;
				readWidth = 'innerWidth';
				readHeight = 'innerHeight';
			}else{
				readSize = otherWindowTest(readSize);
			}
			if((typeof this.pageYOffset == 'number') && (typeof this.pageXOffset == 'number')){
				readScroll = this;
				readScrollY = 'pageYOffset';
				readScrollX = 'pageXOffset';
			}else{
				readScroll = otherWindowTest(readScroll);
			}
			return {
				getScrollX:function(){
					return (readScroll[readScrollX]||0);
				},
				getScrollY:function(){
					return (readScroll[readScrollY]||0);
				},
				getWidth:function(){
					return (readSize[readWidth]||0);
				},
				getHeight:function(){
					return (readSize[readHeight]||0);
				}
			};
		})();
		
		var viewPortWidth = windowState.getWidth();
		var viewPortHeight = windowState.getHeight();
		var horizontalScroll = windowState.getScrollX();
		var verticalScroll = windowState.getScrollY();
		
		var hPos = Math.round(horizontalScroll+((viewPortWidth - 500)/2));
		var vPos = Math.round(verticalScroll+((viewPortHeight - 400)/2));
		
		var positionMod = (typeof divStyleRef.top == 'string')?"px":0;
		
		divStyleRef.top = vPos + positionMod;
		divStyleRef.left = hPos + positionMod;
		
		var url = '/tlds/showRestriction/'+tld;
		
		new Ajax.Updater('restrictions_box_text', url);
		return false;
	},

	addToCart: function(myElement, type, link){
		link = $(link);
		if (link && (!link.checked || link.tagName.toLowerCase() == 'a')){
			var url = WEBROOT + '/cart/addToCart/' + type + '/' + myElement;
			var ajax = new Ajax.Request(url, {
				onComplete: function(transport){
					$(link).replace('<img src="' + IMGROOT + '/icons/cart.png">');
					if (transport.responseText.match(/[0-9]*/)){EuroDNS.Cart.updateViewCartTab('inc');}
				}
			});
			if($('smallCart'))
			{
				var updater = new Ajax.Updater('smallCart', WEBROOT + '/cart/viewSmallCart', {onLoading: function(){$('smallCart').innerHTML = '<img src="' + IMGROOT + '/cart-loader.gif" />'} });
			}
		}
		return false;
	}, 

	
	updateSmallCart: function(divID){
		var ajax = new Ajax.Updater('smallCart',WEBROOT+'/cart/viewSmallCart',{evalScripts:true});
		if(divID == 'all')
			EuroDNS.Cart.updateViewCartTab(0);
		else
			EuroDNS.Cart.updateViewCartTab('dec');
		$$('.domSearching').each(
			function(div){
				elm=div.id.split('_');
				elm.shift();
				domain=elm.join('_');
				if ((domain == divID || divID == 'all') && (div.id=='cart_'+domain && $('status_'+domain).down('span').hasClassName('freestatus'))){
					div.innerHTML='<input type="checkbox" name="data[CartForm][' + domain +']" id="data[CartForm][' + domain +']" value="newDomain" onClick="EuroDNS.DomainSearch.addToCart(\'' + domain + '\')" class="addItemToCart">';
				}
			});
	},
	
	updateViewCartTab: function(mode){
		l_str = $('viewCartTab').firstChild.nodeValue;
		myregexp = /\((\d+)\)$/;
		myregexp.exec(l_str);
		oldCount =  RegExp.$1;
		temp = '/' + oldCount +'/';
		regExp = eval(temp);
		if (mode=='inc'){
			newCount = eval(oldCount + " + 1");
		}
		else if (mode=='dec'){
			newCount = eval(oldCount + " -1");
		}
		else {
			newCount = mode;
		}

			if (newCount < 0){newCount = 0;}
		if(oldCount == "") { 
			$('viewCartTab').firstChild.nodeValue = $('viewCartTab').firstChild.nodeValue + '(' + newCount + ')';
		} else {
			if(newCount == 0) {
				$('viewCartTab').firstChild.nodeValue = $('viewCartTab').firstChild.nodeValue.substr(0,$('viewCartTab').firstChild.nodeValue.length-3);
			} else {
			$('viewCartTab').firstChild.nodeValue = $('viewCartTab').firstChild.nodeValue.replace(regExp,newCount);			
		}
	}
	}
}; 

/**
 * Class de gestion des FolderManager
 * @author Anouar ADLANI
 */
EuroDNS.FolderManager = {
		draggableDomainsArray: [],
		draggableFoldersArray: [],
		currentFolder: null,
		
		toggleIndicator: function(state, div){
			
		},

		start: function(){EuroDNS.FolderManager.initFolderManager();},
		
		initFolderManager: function(){
			if ($('folder_box')){
				
				if (!$('disable_folder_box'))
					EuroDNS.FolderManager.initDraggableDomains('');
				
				EuroDNS.FolderManager.initFolders($$('#folder_list > .folders > .folder')[0].id);
				
				if ($('disable_folder_box'))
					return;
				
				EuroDNS.FolderManager.initExportForm();
				var bin = $('folder_trash');
		        if (bin !== null){
					Droppables.add(bin, 
						{
							accept: 'folder', 
							hoverclass: 'highlight', 
							onDrop: function(d){EuroDNS.FolderManager.removeFolder(d);}
						}
					);
				}
				var bulk = $('domains_selected');
		        if (bulk !== null){
					Droppables.add(bulk, 
						{
							accept: ['domain','folder'], 
							hoverclass: 'highlight', 
							onDrop: function(d){EuroDNS.FolderManager.addBulk(d);}
						}
					);
				}
			}
		}, 
 
		initFolders: function(f){
			EuroDNS.FolderManager.initDroppableFolders(f);
			EuroDNS.FolderManager.initDraggableFolders(f);
			EuroDNS.FolderManager.initClickableFolders(f);
			EuroDNS.FolderManager.currentFolder = f;
		},
		
		initDraggableDomains: function(){
			var domains = $$('.domain').compact();
			domains = domains.uniq();
			domains.each(
				function(p) {
					EuroDNS.FolderManager.draggableDomainsArray.push(new Draggable(p, {revert: true, ghosting: true, zindex:10000}));
					p.setStyle({cursor: "pointer"});
				}
			);
		},

		initDraggableFolders: function(f){
			if (f == $$('#folder_list > .folders > .folder')[0].id){
				var sp = 'sp_'+f.split('_')[1];
				if ($(sp) && $(sp).descendants().length < 1){
					var span_id = sp;
					if (!$('disable_folder_box'))
						EuroDNS.FolderManager.draggableFoldersArray.push(new Draggable($(f), {revert: true, gosting: true}));	
					insert = new Insertion.Top($(f).down('span'), "<img src='"+IMGROOT+"/icons/folder.png' alt=\"\">");
					insert = new Insertion.Top($(f), "<img src=\""+IMGROOT+"/icons/bullet_toggle_minus.png\" alt=\"\">");
				}
			}
			
			$$('#'+f+' .folders li.folder').compact().uniq().each(
				function(folder){
					var span_id = "sp_"+folder.id.split("_")[1];
					if (!$('disable_folder_box'))
						EuroDNS.FolderManager.draggableFoldersArray.push(new Draggable(folder, {revert: true, gosting: true}));	
					insert = new Insertion.Top($(span_id), "<img src='"+IMGROOT+"/icons/folder.png' alt=\"\">");
					insert = new Insertion.Top(folder, "<img src=\""+IMGROOT+"/icons/bullet_toggle_plus.png\" alt=\"\">");
				}
			);
		},
		
		initDroppableFolders: function(f){
			if (f == $$('#folder_list > .folders > .folder')[0].id){
				Droppables.add($(f), {
					accept: ['domain','folder'], 
					hoverclass: 'highlight', 
					onDrop: function(d){
						if ("domain_" == (''+d.id).substr(0, 7)){EuroDNS.FolderManager.updateFolders(d, $(f));}
						else{
							if ((f != d.up('.folder').id)){EuroDNS.FolderManager.moveFolders(d, $(f));}
						}
					}
				});
			}
			$$('#'+f+' .folders .folder').each(
				function(folder){
					Droppables.add(folder, {
						accept: ['domain','folder'], 
						hoverclass: 'highlight', 
						onDrop: function(d){
								if ("domain_" == (''+d.id).substr(0, 7)){EuroDNS.FolderManager.updateFolders(d, folder);}
								else{
									if ((folder.up().id != d.id) && (folder.up(2).id != d.up(3).id)){
										EuroDNS.FolderManager.moveFolders(d, folder);
									}
								}
							}
						}
					);
				}
			);
		},
		
		rootFolderInitialized: false,

		initClickableFolders:function(f){
			if ($(f)){	
				if (f == $$('#folder_list > .folders > .folder')[0].id){
					var fold = $(f).firstChild;
					if (!EuroDNS.FolderManager.rootFolderInitialized){
						Event.observe($(f).firstChild, 'click', 
							function(event){
								Event.stop(event);
								EuroDNS.FolderManager.getTreeChildren($(f));
							}
						);
						Event.observe($(f), 'click', EuroDNS.FolderManager.showDomainList.bindAsEventListener($('sp_'+f.split('_')[1])));
						EuroDNS.FolderManager.rootFolderInitialized = true;
					}
				}
				
				$$('#'+f+' .folders .folder span').each(
					function(fold){
						if(Prototype.Browser.Opera)
						{
							Event.observe(fold, 'mousedown', EuroDNS.FolderManager.showContextMenu.bindAsEventListener(fold));
						}
						else
						{
							Event.observe(fold, 'contextmenu', EuroDNS.FolderManager.showContextMenu.bindAsEventListener(fold));
						}
						
						Event.observe(fold.up().firstChild, 'click', 
							function(event){
								Event.stop(event);
								EuroDNS.FolderManager.getTreeChildren(fold.up());
							}
						);
						Event.observe(fold, 'click',EuroDNS.FolderManager.showDomainList.bindAsEventListener(fold));
					}
				);
			}
		},
		
		showDomainList: function(event){
			EuroDNS.FolderManager.currentFolder = this.up();
			Event.stop(event);
			if (!this.hasClassName('highlight')){
				EuroDNS.FolderManager.getDomainList(this.up());
				$$('.folder span.highlight').each(
					function(fld){
						fld.removeClassName('highlight');
					}
				);
				this.addClassName('highlight');
			}
		},
		
		showContextMenu: function(event){
			if ($('disable_folder_box'))
				return;
			Event.stop(event);
			var contextMenu = $('context_menu');

			var create = "<a href=\"/folders/edit/"+this.id.split('_')[1]+"\" onclick=\"EuroDNS.FolderManager.createNewFolder('" + this.id + "'); return false; \"><div>New folder</div></a>";
			var rename = "<a href=\"/folders/edit/"+this.id.split('_')[1]+"\" onclick=\"EuroDNS.FolderManager.renameFolder('"+this.id+"'); return false;\"><div>Rename</div></a>";
			var del = "<a href=\"#\" onclick=\"EuroDNS.FolderManager.removeFolder($('"+this.id+"')); return false\"><div>Delete</div></a>";
			var box = 	"<div id='context_menu' style='top: "+Event.pointerY(event)+"px; left: "+Event.pointerX(event)+"px; '>"+
							"<ul>"+
								"<li class=\"context_menu_item\">"+create+""+"</li>"+
								"<li class=\"context_menu_item\">"+rename+""+"</li>"+
								"<li class=\"context_menu_item\">"+del+"</li>"+
								"<li class=\"context_menu_item\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cancel</li>"+
							"</ul>"+
						"</div>";

			if (contextMenu){Effect.BlindDown(contextMenu);}
			else{insert = new Insertion.Bottom($('Container'), box);}
			
			Event.observe('context_menu', 'click', EuroDNS.FolderManager.hideContextMenu.bindAsEventListener(this)); 		
			Event.observe(window, 'click', EuroDNS.FolderManager.hideContextMenu);
			 		
			$$('.folder span.highlight').each(function(fld){fld.removeClassName('highlight');});
			Event.element(event).addClassName('highlight');
			EuroDNS.FolderManager.getDomainList(this.up());
		},
		
		createNewFolder: function(from){
			from = $(from);
			var fromID = from.id.split('_')[1];
			if(name = prompt('Please enter the name of the new folder')){
				var create = new Ajax.Request('/folders/create/' + fromID + "/" + name,{
										 	onComplete:function(){
												EuroDNS.FolderManager.getTreeChildren($('folder_'+fromID));
												if (from.next()) from.next().show();
												return false;
											}});
			}
		},			
		
		renameFolder: function(id){
			folder_id = id.split("_")[1];
			if (name = prompt('Please enter the new name')) {
				var ajax = new Ajax.Updater(id, WEBROOT + '/folders/renameFolder/' + folder_id + '/' + name, {
					onComplete: function(){
						new Insertion.Top(id, "<img src='" + IMGROOT + "/icons/folder.png' alt=\"\">")
					}
				});
			}
		},
		
		hideContextMenu: function(event){
			Event.stop(event);
			var contextMenu = $('context_menu');
			if (contextMenu)
			{
				Event.stopObserving(contextMenu, 'click', EuroDNS.FolderManager.hideContextMenu); 		
				Event.stopObserving(window, 'click', EuroDNS.FolderManager.hideContextMenu); 		
				Effect.BlindUp(contextMenu);
				contextMenu.remove();
			}
		},		
		
		treeLoading: false,
		
		getTreeChildren: function(f)
		{
			if ((f.descendants().length) < 4){
				if(EuroDNS.FolderManager.treeLoading == false){
					EuroDNS.FolderManager.treeLoading = true;
					url = WEBROOT + "/folders/listFolders/"+f.id.split("_")[1];
					var ajax = new Ajax.Updater(f, url, {
							insertion: Insertion.Bottom,
							onLoading: EuroDNS.FolderManager.toggleIndicator('on', 'folder_list'),
							onComplete: function(transport) {
								if (200 == transport.status){
									EuroDNS.FolderManager.toggleIndicator('off', 'folder_list'); 
									EuroDNS.FolderManager.initFolders(f.id);
									EuroDNS.FolderManager.treeLoading = false;
								}
							}
					});
				}
				
			}
			else{
				f.immediateDescendants().each(	
					function(fd){
						if ((fd.className == 'folders' && fd.tagName == 'UL') || (fd.id == 'foldertabs')){fd.remove();}					
					}
				);
			}
			if (f.firstChild.src.split('/').last() == "bullet_toggle_minus.png"){
				f.firstChild.src = IMGROOT+"/icons/bullet_toggle_plus.png";
			}
			else{
				if (f.firstChild.src.split('/').last() == "bullet_toggle_plus.png"){
					f.firstChild.src = IMGROOT+"/icons/bullet_toggle_minus.png";
				}
			}
		},
		
		getTreeChildrenAfterCreateFolder: function(f)
		{
			EuroDNS.FolderManager.treeLoading = true;
			url = WEBROOT + "/folders/listFolders/"+f.id.split("_")[1];
			var ajax = new Ajax.Updater(f, url, {
					insertion: Insertion.Bottom,
					onLoading: function(){
						EuroDNS.FolderManager.toggleIndicator('on', 'folder_list');
						f.immediateDescendants().each(	
						function(fd){
								if ((fd.className == 'folders' && fd.tagName == 'UL') || (fd.id == 'foldertabs')){fd.remove();}					
							}
						);
					},
					onComplete: function(transport) {
						if (200 == transport.status){
							EuroDNS.FolderManager.toggleIndicator('off', 'folder_list'); 
							EuroDNS.FolderManager.initFolders(f.id);
							EuroDNS.FolderManager.treeLoading = false;
						}
					}
			});
		},
		
		getDomainList: function(f){
			f = $(f);
			url = WEBROOT + "/folders/listDomains/"+f.id.split("_")[1];
			var ajax = new Ajax.Updater($("domain_list"), url, {
					evalScripts: true,
					onComplete: function(transport) {
						if (200 == transport.status){
							EuroDNS.FolderManager.initDraggableDomains(f.id);
						}
						$('ExportSelectedFolder').value = f.id.split("_")[1];
						EuroDNS.FolderManager.toggleIndicator('off', 'domain_list');
					}
			});
		},
	
		refreshTreeChildren: function(f){
			url = WEBROOT + "/folders/listFolders/"+f.id.split("_")[1];
			var ajax = new Ajax.Updater(f, url, {});
		},
	
		updateFolders: function(domain, folder){
			if (confirm("Are you sure to want to move this domain?")) {
				var domId = domain.id.split('_')[1];
				var folderId = folder.id.split('_')[1];
				var url = WEBROOT + "/folders/moveDomain/" + domId + "/" + folderId;
				var ajax = new Ajax.Request(url, {
					method: 'post',
					onLoading: EuroDNS.FolderManager.toggleIndicator('on', 'domain_list'),
					onComplete: function(transport){
						if (200 == transport.status) {
							$$('.folder span.highlight').compact().uniq().each(function(fld){
								EuroDNS.FolderManager.getDomainList("folder_" + fld.id.split("_")[1]);
							});
						}
					}
				});
			}
		}, 

		moveFolders: function(folder, folderParent){
			if (confirm("Are you sure to want to move this folder?")) {
				var folderParentId = folderParent.id.split('_')[1];
				var folderId = folder.id.split('_')[1];
				var oldParentId = folder.up('.folders').previous('span');
				
				if (oldParentId) 
					oldParentId = oldParentId.id.split('_')[1];
				else 
					oldParentId = false;
				
				if (!oldParentId || folderParentId != oldParentId) {
					var url = WEBROOT + "/folders/moveFolder/" + folderId + "/" + folderParentId;
					var ajax = new Ajax.Request(url, {
						method: 'post',
						onLoading: EuroDNS.FolderManager.toggleIndicator('on', 'folder_list'),
						onComplete: function(transport){
							if (200 == transport.status) {
								EuroDNS.FolderManager.refreshFolderList();
							}
						}
					});
				}
			}
		}, 

		removeFolder: function(folder)
		{
			if (confirm("Are you sure to want to remove this folder? \n All the contained domains will be moved to the parent folder")) {
				var folderId = folder.id.split('_')[1];
				var url = WEBROOT + "/folders/removeFolder/" + folderId;
				var ajax = new Ajax.Request(url, {
					method: 'post',
					onComplete: function(transport){
						if (200 == transport.status) {
							EuroDNS.FolderManager.refreshFolderList();
							$('sp_0').addClassName('highlight');
							EuroDNS.FolderManager.getDomainList("folder_0");
						}
					}
				});
			}
		}, 

		editFolder: function(folder){
			var folderId = folder.id.split('_')[1]; 
			var url = WEBROOT + "/folders/edit/"+folderId;
			var ajax = new Ajax.Updater("folder_editor", url, 
				{
					method: 'post', 
					evalScripts: true,
					onLoading: EuroDNS.FolderManager.toggleIndicator(),
					onComplete: function(transport) {
						if (200 == transport.status){EuroDNS.FolderManager.toggleIndicator();}
					}

				}
			);
			
		},

		addBulk: function(p){
			EuroDNS.FolderManager.toggleIndicator('on', 'domains_selected');
			if (p.hasClassName('domain')){
				var domain_id = p.id.split("_")[1];
				var ajax = new Ajax.Request(WEBROOT+"/domains/domainSelection/addDomain/"+domain_id,
					{
						method: 'post', 
						onComplete: function(transport) {
							if (200 == transport.status){
								EuroDNS.FolderManager.refreshSelectedDomains();
								EuroDNS.FolderManager.getDomainList(EuroDNS.FolderManager.currentFolder);
							}
						}
					}
				);
			}
			else{
				if (p.hasClassName('folder')){
					var domains = $$('.domain');
					domains.each(
						function(d){
							if (d.hasClassName("domain")){
								var dom_id = d.id.split("_")[1];
								var ajax = new Ajax.Request(WEBROOT+"/domains/domainSelection/addDomain/"+dom_id,
									{
										method: 'post', 
										onLoading: function(transport) {
//											if ($$("#domains_selected_holder li").lenght > 0){
//												$$("#domains_selected_holder li").first().update(EuroDNS.Site.getLoadingMessage());
//											}
//											else{
//												$$("#domains_selected_holder .s").first().update(EuroDNS.Site.getLoadingMessage());
//											}
										}					
									}
								);
							}
						}
					);
					EuroDNS.FolderManager.refreshSelectedDomains();
				}
			}
		},
		
		refreshSelectedDomains: function(){
			var ajax = new Ajax.Updater("domains_selected_holder", WEBROOT+"/folders/listSelectedDomains/",
				{
					method: 'post', 
					onSuccess: function(transport){if (200 == transport.status)EuroDNS.FolderManager.toggleIndicator('off', 'domains_selected')},
					evalScripts: true
				}
			);	
					
			
		},

		refreshFolderList: function(){
			if ($('folder_list')){
				
				new Ajax.Updater('foldertabs', WEBROOT + "/folders/listFolders" , 
					{
						evalScripts: true,
						onComplete: function(transport) {
							if (200 == transport.status){
								EuroDNS.FolderManager.initDroppableFolders($$('#folder_list > .folders > .folder')[0].id);
								EuroDNS.FolderManager.initDraggableFolders($$('#folder_list > .folders > .folder')[0].id);
								EuroDNS.FolderManager.initClickableFolders($$('#folder_list > .folders > .folder')[0].id);
								EuroDNS.FolderManager.toggleIndicator('off', 'folder_list');
							}
						}
					}
				);
			}
			
		}, 

		refreshFiltersrList: function(){
			if ($('filters_list')){
				var ajax = new Ajax.Updater('filters_list', WEBROOT + "/folders/listFilters", 
					{
						evalScripts: true,
						loading: EuroDNS.FolderManager.toggleIndicator(), 
						success: EuroDNS.FolderManager.toggleIndicator()
					}
				);
			}
		}, 
		
		 updateFilterTruncateSelect: function(field){
			if (!field) { return false; }
		 	var ajax = new Ajax.Updater($("FilterTruncateRule").up(), "/folders/getFiltersTruncatesSelect/" + field);
		 },
		 
		 
		 initExportForm: function(){
			var div = $('domainsExport');
			if (div){
				div.observe('submit', 
					function(event){
						var thisViewDomains = $$('#domain_list .domain').collect(function(element){return element.id.match(/domain_(\d+)/)[1];});
						$('ExportSelectedDomains').value = thisViewDomains;
					});
			}
		 }
		
};

EuroDNS.Domain = {
	showSmallBrowser: function(URI)
	{
		if (URI.indexOf('http://') !== 0)
		{
			URI = 'http://'+URI;
		}
		
		if(window.innerHeight)
		{
			browserHeight=window.innerHeight - 100;	
		}
		else
		{
			browserHeight = 500;	
		}
		
		if(window.innerWidth)
		{
			browserWidth = window.innerWidth - 100; 	
		}
		else
		{
			browserWidth = 800;	
		}
		
		var win = new Window({className: "eurodnslogin", title: "Mini Browser", top:100, left:100, width:browserWidth, height:browserHeight, recenterAuto: false, url: URI, showEffectOptions: {duration:1.5}, destroyOnClose: true, wiredDrag: true});
		win.showCenter(true);		
	},
	
	showSmallWindow: function(URI, wintitle){
		if (! $('domain_window'))
		{
			if (wintitle === null) { wintitle = ""; }
			var win = new Window(
				{
					id: "domain_window",
					className: "eurodnslogin", 
					title: "&nbsp;",
					maximizable: false, 
					resizable: false, 
					minWidth: 500,
					minHeight: 173, 
					destroyOnClose: true,
					draggable:false, 
					wiredDrag: false
				});
			win.setAjaxContent(URI, {method: 'get', evalScripts: true}, true, true);
			win.show();
		}
	},
	
	showSmallPopupWindow: function(URI, wintitle){
		if (! $('domain_window'))
		{
			if (wintitle === null) { wintitle = ""; }
			var win = new Window(
					{
						id: "domain_window",
						className: "eurodnslogin", 
						title: "&nbsp;",
						maximizable: false, 
						resizable: false, 
						minWidth: 600,
						minHeight: 400, 
						destroyOnClose: true, 
						draggable:false, 
						wiredDrag: false
					});
			win.setAjaxContent(URI, {method: 'get', evalScripts: true}, true, true);
			win.show();
			win.updateHeight();
		}
	},
	
	mobilizePopup: function()
	{
		var obj = null;
		if(document.getElementById){
			obj = document.getElementById('mobilize_popup_box');
		}else if(document.all){
			obj = document.all['mobilize_popup_box'];
		}else if(document.layers){
			obj = document.layers['mobilize_popup_box'];
		}
		var divStyleRef = (obj && obj.style) || obj;
		
		var windowState = (function(){
			var readScroll = {scrollLeft:0,scrollTop:0};
			var readSize = {clientWidth:0,clientHeight:0};
			var readScrollX = 'scrollLeft';
			var readScrollY = 'scrollTop';
			var readWidth = 'clientWidth';
			var readHeight = 'clientHeight';
			function otherWindowTest(obj){
				if((document.compatMode) && (document.compatMode == 'CSS1Compat') && (document.documentElement)) {
					return document.documentElement;
				} else if(document.body) {
					return document.body;
				}else{
					return obj;
				}
			};
			if((typeof this.innerHeight == 'number') && (typeof this.innerWidth == 'number')){
				readSize = this;
				readWidth = 'innerWidth';
				readHeight = 'innerHeight';
			}else{
				readSize = otherWindowTest(readSize);
			}
			if((typeof this.pageYOffset == 'number') && (typeof this.pageXOffset == 'number')){
				readScroll = this;
				readScrollY = 'pageYOffset';
				readScrollX = 'pageXOffset';
			}else{
				readScroll = otherWindowTest(readScroll);
			}
			return {
				getScrollX:function(){
					return (readScroll[readScrollX]||0);
				},
				getScrollY:function(){
					return (readScroll[readScrollY]||0);
				},
				getWidth:function(){
					return (readSize[readWidth]||0);
				},
				getHeight:function(){
					return (readSize[readHeight]||0);
				}
			};
		})();
		
		var viewPortWidth = windowState.getWidth();
		var viewPortHeight = windowState.getHeight();
		var horizontalScroll = windowState.getScrollX();
		var verticalScroll = windowState.getScrollY();
		
		var hPos = Math.round(horizontalScroll+((viewPortWidth - 540)/2));
		var vPos = Math.round(verticalScroll+((viewPortHeight - 620)/2));
		
		var positionMod = (typeof divStyleRef.top == 'string')?"px":0;
		
		divStyleRef.top = vPos + positionMod;
		divStyleRef.left = hPos + positionMod;
	},
	
	whoisPopup: function(domain)
	{
		var obj = null;
		if(document.getElementById){
			obj = document.getElementById('whois_popup_box');
		}else if(document.all){
			obj = document.all['whois_popup_box'];
		}else if(document.layers){
			obj = document.layers['whois_popup_box'];
		}
		var divStyleRef = (obj && obj.style) || obj;
		
		var windowState = (function(){
			var readScroll = {scrollLeft:0,scrollTop:0};
			var readSize = {clientWidth:0,clientHeight:0};
			var readScrollX = 'scrollLeft';
			var readScrollY = 'scrollTop';
			var readWidth = 'clientWidth';
			var readHeight = 'clientHeight';
			function otherWindowTest(obj){
				if((document.compatMode) && (document.compatMode == 'CSS1Compat') && (document.documentElement)) {
					return document.documentElement;
				} else if(document.body) {
					return document.body;
				}else{
					return obj;
				}
			};
			if((typeof this.innerHeight == 'number') && (typeof this.innerWidth == 'number')){
				readSize = this;
				readWidth = 'innerWidth';
				readHeight = 'innerHeight';
			}else{
				readSize = otherWindowTest(readSize);
			}
			if((typeof this.pageYOffset == 'number') && (typeof this.pageXOffset == 'number')){
				readScroll = this;
				readScrollY = 'pageYOffset';
				readScrollX = 'pageXOffset';
			}else{
				readScroll = otherWindowTest(readScroll);
			}
			return {
				getScrollX:function(){
					return (readScroll[readScrollX]||0);
				},
				getScrollY:function(){
					return (readScroll[readScrollY]||0);
				},
				getWidth:function(){
					return (readSize[readWidth]||0);
				},
				getHeight:function(){
					return (readSize[readHeight]||0);
				}
			};
		})();
		
		var viewPortWidth = windowState.getWidth();
		var viewPortHeight = windowState.getHeight();
		var horizontalScroll = windowState.getScrollX();
		var verticalScroll = windowState.getScrollY();
		
		var hPos = Math.round(horizontalScroll+((viewPortWidth - 540)/2));
		var vPos = Math.round(verticalScroll+((viewPortHeight - 380)/2));
		
		var positionMod = (typeof divStyleRef.top == 'string')?"px":0;
		
		divStyleRef.top = vPos + positionMod;
		divStyleRef.left = hPos + positionMod;
		document.getElementById('whois_popup_box_text').innerHTML = '<iframe src="/whois/' + domain + '/whoisPopup" style="width: 540px; height: 380px; border: 0px;"></iframe>';
	}
	
}; 

EuroDNS.Bulk = {
	updateDomains: function(){
		var ajaxDomains = new Ajax.Updater('domain_results',
						 WEBROOT + "/domains/getDomainList/",
						 {
						 	evalScripts: true,
						 	onComplete: EuroDNS.Site.hideLoadingMessage
						 });
	},

	updateFilters: function(){
		var ajax = new Ajax.Updater('domains_filters', WEBROOT + "/domains/filter/",
						 {
						 	evalScripts: true,
						 	onSuccess: 	function(){
						 					EuroDNS.Site.hideLoadingMessage();
						 					EuroDNS.Bulk.updateFilterResults();
						 				}
						 });		
	},
	
	updateFilterResults: function(){
		var ajax = new Ajax.Updater('filterResults', WEBROOT + '/domains/filterResults/',{evalScripts:true});
	},
	
	updateSavedFilters: function(){
		if ($('UsersFilterId')){var ajax = new Ajax.Updater($('UsersFilterId').up().up(), WEBROOT + '/usersFilters/getSavedFiltersSelect',{evalScripts:true});}
	},
	
	addDomain: function(element){
		element = $(element);
		if (element.getValue() > 1){
			if (element.id.indexOf('-') !== 0){
				var elementIDParts = element.id.split('-');
				id = elementIDParts[2];
			}
			else{id = element.id;}
			if (id != null && id !== ''){
				var ajax = new Ajax.Request(WEBROOT + '/domains/domainSelection/addDomain/'+id,
				{
					onComplete: function(){
				 					EuroDNS.Bulk.updateFilterResults();
									EuroDNS.Bulk.updateDomains();
								}
				});
			}
		}
	},
	
	 selectAll: function(event, checked){
		var checkboxes = $$('.domain-cb');
		checkboxes.each(function(element){
							element.checked = checked;
							if (checked){element.setAttribute('checked','checked');}
							else{if (element.hasAttribute('checked')){element.removeAttribute('checked');}}
						});
		$('bulkSelectAllDomains').toggle();
		$('bulkDeselectAllDomains').toggle();
	 	return false;
	 }
	
};

EuroDNS.Validate = {
	
	switchType: function(type){
		if ($('hkPrivateOwner')){
			if (type=='company'){$('hkPrivateOwner').hide();}	
			if (type=='private'){$('hkPrivateOwner').show();}	
		}
		if ($('hkCompanyOwner')){
			if (type=='company'){$('hkCompanyOwner').show();}	
			if (type=='private'){$('hkCompanyOwner').hide();}	
		}
	},
	
	dynamicDropDown: function(dropDownID,alertText){
			var dropDown = $(dropDownID);
			var optionValue = dropDown.options[dropDown.selectedIndex].value;
			var i = 0;
			if (optionValue.length === 0){
				newValue = prompt(alertText, "");						
				if (newValue.length > 0){
					var newOption = new Option();
					newOption.text = newValue;
					dropDown.options[1] = newOption;
					dropDown.selectedIndex = 1;
				}
			}			
	}
}; 

EuroDNS.Formular = {
	helpBox: false,

	start: function(helpBox){
		this.helpBox = helpBox;
		$$('.input_help').each(
			function(ih){
				ih = $(ih);
				ih.hide();
				if (ih.previous()){
					Event.observe(ih.previous(), 'focus', EuroDNS.Formular.showHelp.bindAsEventListener(ih));
					Event.observe(ih.previous(), 'blur', EuroDNS.Formular.hideHelp.bindAsEventListener(ih));
				}
			}
		);

	}, 	
	
	hideContactBodies: function(contactArr)
	{
		for (var index = 0, len = contactArr.length; index < len; ++index)
		{
			EuroDNS.Formular.hideContactBody (contactArr[index]);
		}
	},
				
	orderedDomainClientInformationHKCompany : function ()
	{
		if ($('registrantOidDocumentType').value != 'OTHORG')
		{
			$('registrantOidDocumentOwnType').value = '';
			$('registrantOTypeOthOrg').hide();
		}		
		else
		{
			$('registrantOTypeOthOrg').show();
		}
			
		Event.observe($('registrantOidDocumentType' ), 'change', function(event){EuroDNS.Formular.orderedDomainClientInformationHKCompany();});
	},
	
	orderedDomainClientInformationHKIndividual : function ()
	{
		if ($('registrantIidDocumentType').value != 'OTHIDV')
		{
			$('registrantIidDocumentOwnType').value = '';
			$('registrantITypeOthIdv').hide();
		}		
		else
		{
			$('registrantITypeOthIdv').show();
		}
			
		Event.observe($('registrantIidDocumentType' ), 'change', function(event){EuroDNS.Formular.orderedDomainClientInformationHKIndividual();});
	},
	
	orderedDomainClientInformationHKInit: function ()
	{
		if( $('registrantOidDocumentType') != null)
		{
			EuroDNS.Formular.orderedDomainClientInformationHKCompany();
		}
		
		if( $('registrantIidDocumentType') != null)
		{
			EuroDNS.Formular.orderedDomainClientInformationHKIndividual();
		}		
	},	
	
	orderedDomainClientInformationITInit: function ()
	{
		if ($('ProfileUseTrusteeContacts') !== null)
		{
			Event.observe
			(
				$('ProfileUseTrusteeContacts'), 'change', 
				function()
				{					
					ProfileFormID = $('ProfileFormID');
					if (ProfileFormID)
					{
						ProfileFormID.submit();
					}
				}
			);
		}
	},
	
	orderedDomainClientInformationLUInit: function ()
	{
		if ($('ProfileUseTrusteeContacts') !== null)
		{
			Event.observe
			(
				$('ProfileUseTrusteeContacts'), 'change', 
				function()
				{					
					ProfileFormID = $('ProfileFormID');
					if (ProfileFormID)
					{
						ProfileFormID.submit();
					}
				}
			);
		}
	},	
	
	
	orderedDomainClientInformation: function ()
	{	
		if ($('ProfileTopLevelDomain') !== null)
		{
			if ($('ProfileTopLevelDomain').value == 'hk')
			{				
				EuroDNS.Formular.orderedDomainClientInformationHKInit();
			}
			
			if ($('ProfileTopLevelDomain').value == 'it')
			{				
				EuroDNS.Formular.orderedDomainClientInformationITInit();
			}
			
			if ($('ProfileTopLevelDomain').value == 'lu')
			{				
				EuroDNS.Formular.orderedDomainClientInformationLUInit();
			}
		}
	
		if (null !== $('ProfileOContactID'))
		{
			Event.observe
			(
				$('ProfileOContactID'), 'change', 
				function()
				{
					var ProfileContactChange = $('ProfileContactChange');
					var ContactChange = $('contactChange');
					if (ProfileContactChange) 
					{
						ProfileContactChange.value = 'yes';
					}
					if (ContactChange) 
					{
						ContactChange.value = 'yes';
					}
					var ProfileFormID = $('ProfileFormID');
					var action = $('action');
					if(action){
						action.value = 'refresh';
						$('ajaxLoader_o').setStyle({display: 'inline'});
						ProfileFormID.submit();
					}
					/*if (ProfileFormID)
					{
						ProfileFormID.submit();
					}*/
				}
			);
		}	
		
		if (null !== $('ProfileAContactID'))
		{
			Event.observe
			(
				$('ProfileAContactID'), 'change', 
				function()
				{					
					var ProfileContactChange = $('ProfileContactChange');
					var ContactChange = $('contactChange');
					if (ProfileContactChange)
					{
						ProfileContactChange.value = 'yes';
					}
					if (ContactChange) 
					{
						ContactChange.value = 'yes';
					}
					var ProfileFormID = $('ProfileFormID');
					var action = $('action');
					if(action){
						action.value = 'refresh';
						$('ajaxLoader_a').setStyle({display: 'inline'});
						ProfileFormID.submit();
					}
					/*if (ProfileFormID)
					{
						ProfileFormID.submit();
					}*/
				}
			);
		}		
		
		
		if (null !== $('ProfileTContactID'))
		{
			Event.observe
			(
				$('ProfileTContactID'), 'change', 
				function()
				{					
					var ProfileContactChange = $('ProfileContactChange');
					var ContactChange = $('contactChange');
					if (ProfileContactChange)
					{
						ProfileContactChange.value = 'yes';
					}
					if (ContactChange) 
					{
						ContactChange.value = 'yes';
					}
					var ProfileFormID = $('ProfileFormID');
					var action = $('action');
					if(action){
						action.value = 'refresh';
						$('ajaxLoader_t').setStyle({display: 'inline'});
						ProfileFormID.submit();
					}
					/*if (ProfileFormID)
					{
						ProfileFormID.submit();
					}*/
				}
			);
		}
		
		
		if (null !== $('ProfileBContactID'))
		{
			Event.observe
			(
				$('ProfileBContactID'), 'change', 
				function()
				{	
					var ProfileContactChange = $('ProfileContactChange');
					var ContactChange = $('contactChange');
					if (ProfileContactChange)
					{
						ProfileContactChange.value = 'yes';
					}
					if (ContactChange) 
					{
						ContactChange.value = 'yes';
					}
					var ProfileFormID = $('ProfileFormID');
					var action = $('action');
					if(action){
						action.value = 'refresh';
						$('ajaxLoader_b').setStyle({display: 'inline'});
						ProfileFormID.submit();
					}
					/*if (ProfileFormID)
					{
						ProfileFormID.submit();
					}*/
				}
			);
		}
		
		if (null !== $('ProfileCedContact'))
		{
			Event.observe
			(
				$('ProfileCedContact'), 'change', 
				function()
				{
					var ProfileFormID = $('ProfileFormID');
					if (ProfileFormID)
					{
						ProfileFormID.submit();
					}
				}
			);
		}
		
		
		if($('cedInformationBloc') && $('contactType'))
		{
			contactType = $('contactType').value;
			
			if($('ProfileAdvanced' + contactType + 'CedLegalEntityType'))
			{
				entityType=$('ProfileAdvanced' + contactType + 'CedLegalEntityType').value;
				if(entityType=='other')
				{
					$('cedEntityOther').show();	
				}
				else
				{
					$('cedEntityOther').hide();
				}
				
				Event.observe
				(
					$('ProfileAdvanced' + contactType + 'CedLegalEntityType'), 'change', 
					function()
					{
						entityType=$('ProfileAdvanced' + contactType + 'CedLegalEntityType').value;
						if(entityType=='other')
						{
							$('cedEntityOther').show();	
						}
						else
						{
							$('cedEntityOther').hide();
						}
						
					}
				);
			}
			
			if($('ProfileAdvanced' + contactType + 'CedIdentForm'))
			{
				identForm=$('ProfileAdvanced' + contactType + 'CedIdentForm').value;
				if(identForm=='other')
				{
					$('cedFormOther').show();	
				}
				else
				{
					$('cedFormOther').hide();
				}
				
				Event.observe
				(
					$('ProfileAdvanced' + contactType + 'CedIdentForm'), 'change', 
					function()
					{
						identForm=$('ProfileAdvanced' + contactType + 'CedIdentForm').value;
						if(identForm=='other')
						{
							$('cedFormOther').show();	
						}
						else
						{
							$('cedFormOther').hide();
						}
						
					}
				);
				
			}
		}
	},
	
	
	
	/**
	 * Afficher les donnes d'un contact specifie par contactType (A,O,T,B) et switcher l'icon
	 * @author Claude SCHLESSER
	 */	
	showContactBody: function(contactType)
	{
		if ($('ContactProfile' + contactType + 'ToggleContent') != null)
		{
			$('ContactProfile' + contactType + 'ToggleContent').show();
			
			if ($('ContactProfile' + contactType + 'ToggleContent') != null)
			{
				$('ContactProfile' + contactType + 'ToggleBut' ).src = '/img/icons/zoom_out.png';
				$('ContactProfile' + contactType + 'ToggleBut').parentNode.parentNode.style.backgroundPosition = "bottom" ;
				$('ContactProfile' + contactType + 'BodyHidden').value = 0;
			}	
		}
	},
	

	/**
	 * Cacher les donnes d'un contact specifie par contactType (A,O,T,B) et switcher l'icon
	 * @author Claude SCHLESSER
	 */	
	hideContactBody: function(contactType)
	{
		if ($('ContactProfile' + contactType + 'ToggleContent') != null)
		{
			$('ContactProfile' + contactType + 'ToggleContent').hide();
			
			if ($('ContactProfile' + contactType + 'ToggleBut' ) != null)
			{
				$('ContactProfile' + contactType + 'ToggleBut' ).src = '/img/icons/zoom_in.png';
				$('ContactProfile' + contactType + 'ToggleBut' ).parentNode.parentNode.style.backgroundPosition = "top" ;
				$('ContactProfile' + contactType + 'BodyHidden').value = 1;
			}			
		}
	},
	
	/**
	 * Cr�er l'evenement qui gere l'affichage de la methode de remboursement
	 * @author Claude SCHLESSER
	 */	
	 createRefundRequestEvent: function ()
	 {
	 	if (($('RefundRequestMethod') != null) && ($('RefundRequestMethodSelection') != null))
	 	{
	 		if ($('RefundRequestMethodSelectionButton') != null)
	 		{
	 			$('RefundRequestMethodSelectionButton').hide();
	 		}
	 		
	 		Event.observe($('RefundRequestMethod' ), 'change', function(event){$('RefundRequestMethodSelection').submit();});
	 	}	 
	 },
	 
	 	 
	 
	/**
	 * Afficher ou cacher les donnes d'un contact specifie par contactType (A,O,T,B) et switcher l'icon
	 * @author Claude SCHLESSER
	 */	
	toggleContactBody: function(contactType)
	{
		if ($('ContactProfile' + contactType + 'ToggleContent') != null)
		{
			if(Element.visible($('ContactProfile' + contactType + 'ToggleContent')))
			{
				EuroDNS.Formular.hideContactBody(contactType);
			}
			else
			{
				EuroDNS.Formular.showContactBody(contactType);
			}
		}
	},
		
	
	/**
	 * Cr�er l'evenement qui gere l'affichage du contact contactType (A,O,T,B)
	 * @author Claude SCHLESSER
	 */	
	createContactEvent: function(contactType)
	{		
		if ($('ContactProfile' + contactType + 'ToggleContent') != null)
		{
			Event.observe($('ContactProfile' + contactType + 'ToggleBut' ), 'click', function(event){EuroDNS.Formular.toggleContactBody(contactType);});
		}
	},
			
	initContactEdition: function(contactArrHide, contactArrEve){
		EuroDNS.Formular.hideContactBodies (contactArrHide);
		for (var index = 0, len = contactArrEve.length; index < len; ++index){
			EuroDNS.Formular.createContactEvent(contactArrEve[index]);
		}	
	},
	
	showHelp: function(){
		if (EuroDNS.Formular.helpBox){
			var myHelpBox = $(EuroDNS.Formular.helpBox);
			myHelpBox.update(this.innerHTML);
		}
		else{this.show();}
	}, 
	
	hideHelp: function(){
		if (EuroDNS.Formular.helpBox){
			$(EuroDNS.Formular.helpBox).update('');
		}
		else{this.hide();}
	},
	
	selectTogglesDisplay: function (selectID, value, displayID){
		if ($(selectID).value == value){$(displayID).show();}
		else{$(displayID).hide();}
	},

	showHide: function (identifier1, identifier2){
		$(first_selector).show();
		$(second_selector).hide();	
	},
	
	editContact: function(selectID,domain){
		document.location=WEBROOT+'/profiles/editContact/' + $(selectID).value + '/' + domain;
	},
	
	togglecheckAll: function(isChecked, selector){
		if(isChecked == true){
			EuroDNS.Formular.checkAll(selector)
		}
		else{
			EuroDNS.Formular.uncheckAll(selector)
		}
	},
	
	checkAll: function(selector){
		checked = false;
		$$(selector).each(
			function(theObj){
				if(!theObj.checked){checked = true;}
				theObj.checked='checked';
			}
		);
		return checked;
	},
	
	uncheckAll: function(selector){
		unchecked = false;
		$$(selector).each(function(theObj){
			if(theObj.checked){unchecked = true;}
			theObj.checked='';
		});
		return unchecked;
	},
	
	submitSunriseType: function(){
		
		EuroDNS.FolderManager.toggleIndicator('on', 'ProfileFormID');
		$('ProfileFormID').submit();
	}
	
	
};





EuroDNS.DomainSearch = {
	
	toggleNPA: function(force){
		var npa = $('newspromoalerts');
		if (npa){
			if (!force){npa.toggle();}
			else if (force=='hide'){npa.hide();}
			else if (force=='show'){npa.show();}
		}

		npa = $('dasInfo');
		if (npa){
			if (!force){npa.toggle();}
			else if (force=='hide'){npa.hide();}
			else if (force=='show'){npa.show();}
		}

		npa = $('statscontentbox');
		if (npa){
			if (!force){npa.toggle();}
			else if (force=='hide'){npa.hide();}
			else if (force=='show'){npa.show();}
		}
	},
	
	start: function(){
		var sc = $('smallSearch');
		if (sc){sc.show();}
		
		var jse = $('JSenabled');
		if (jse){jse.value=true;}
		
		var dsd = $('DomainSearchDomain');
		var bsf = $('bulksearchfield');
		if ((dsd && dsd.value!=='') || (bsf && bsf.value!=='')){
			$('tldSearchForm').request({
				onComplete: function(transport){
					$('searchResultsDiv').innerHTML=transport.responseText;	
					EuroDNS.DomainSearch.showTabs();
				}
			});
		}	
	}, 
	
	checkAll: function(){
		
		if(!searchInProgress)
		{
			
			if (EuroDNS.Formular.checkAll('.addItemToCart')){			
				$('checkAllBottom').hide();
				$('uncheckAllBottom').show();
				$('checkAllTop').hide();
				$('uncheckAllTop').show();
				$('addToCartTop').show();
				$('addToCartBottom').show();
			}
		}
	},
	
	uncheckAll: function(){
		if(!searchInProgress)
		{
			if (EuroDNS.Formular.uncheckAll('.addItemToCart')){
				$('addToCartTop').hide();
				$('uncheckAllTop').hide();
				$('checkAllTop').show();
				$('addToCartBottom').hide();
				$('uncheckAllBottom').hide();
				$('checkAllBottom').show();

			}
			
		}
	},
	
	whoisBrowser: function(URI)
	{
		var win = new Window({className: "eurodnslogin", title: "Whois", top:100, left:100, width:800, height:600, url: URI, showEffectOptions: {duration:1.5}, destroyOnClose: true, wiredDrag: true});
		win.showCenter(true);		
	},	
	
	searchVaryDisplay: function(divID,domainStatus){
		searchInProgress = true;
		domain = divID.gsub('_','.');

		switch (domainStatus)
		{
			case 'free':
				var contents = '<input type="checkbox" name="data[CartForm][' + divID +']" id="data[CartForm][' + divID +']" value="newDomain" onClick="EuroDNS.DomainSearch.addToCart(\'' + divID + '\')" class="addItemToCart" />';
				if ($('cart_'+divID)){$('cart_'+divID).innerHTML = contents;}
	
				var caDiv = $('checkAllDiv');
				if (caDiv && !caDiv.visible()){caDiv.show();}
			break;

			case 'taken':
				$$('#cart_'+divID+' .'+domainStatus+'status').invoke('removeClassName', 'unknownstatus').invoke('show');
			break;
			
			case 'sedo':
				$$('#cart_'+divID+' .takenstatus').invoke('addClassName', 'unknownstatus').invoke('hide');
				$$('#cart_'+divID+' .'+domainStatus+'status').invoke('removeClassName', 'aftermarket').invoke('show');
				$$('#status_'+divID+' .takenstatus').invoke('addClassName', 'unknownstatus').invoke('hide');
				$$('#status_'+divID+' .'+domainStatus+'status').invoke('removeClassName', 'aftermarket').invoke('show');
				
				$$('#cart_'+divID+' .aftermarket').invoke('remove');
			break;
			
			case 'afternic':
				$$('#cart_'+divID+' .takenstatus').invoke('addClassName', 'unknownstatus').invoke('hide');
				$$('#cart_'+divID+' .'+domainStatus+'status').invoke('removeClassName', 'aftermarket').invoke('show');
				$$('#status_'+divID+' .takenstatus').invoke('addClassName', 'unknownstatus').invoke('hide');
				$$('#status_'+divID+' .'+domainStatus+'status').invoke('removeClassName', 'aftermarket').invoke('show');
				
				$$('#cart_'+divID+' .aftermarket').invoke('remove');
			break;
			
			case 'auctionme1':
			case 'auctionme2':
			    	$$('#cart_'+divID+' .takenstatus').invoke('addClassName', 'unknownstatus').invoke('hide');
				$$('#cart_'+divID+' .'+domainStatus+'status').invoke('removeClassName', 'aftermarket').invoke('show');
				$$('#status_'+divID+' .takenstatus').invoke('addClassName', 'unknownstatus').invoke('hide');
				$$('#status_'+divID+' .'+domainStatus+'status').invoke('removeClassName', 'aftermarket').invoke('show');
				
				$$('#cart_'+divID+' .aftermarket').invoke('remove');
			break;
			
		}
		$$('#status_'+divID+' .'+domainStatus+'status').invoke('removeClassName', 'unknownstatus').invoke('show');
		$$('#cart_'+divID+' .unknownstatus'+','+'#status_'+divID+' .unknownstatus'+','+'#status_'+divID+' .searchimage').invoke('remove');
	},
	
	searchFinished: function(){
		searchInProgress = false;
		if ($('disclaim')){
			$('disclaim').removeClassName('jsEnabled');
			$('disclaim').hide();
			}
		
		var inputs = $$('.domSearching input');
		if (inputs.length < 1){
			var check = $('checkAllTop'); if (check){check.hide();}
			check = $('checkAllBottom'); if (check){check.hide();}
		}
	},
	
	addToCart: function (domain){
		
		
			items = domain.split('_');
			dom = items.shift();
			
			tld='';
			for(i=0;i<items.length;i++){
				if(tld.length>0){
					tld = tld + '_';
				}
				tld = tld + items[i];	
			}
			
			if ($('cart_'+domain).down().checked===true){ // || tld=='asia_com' || tld=='asia' ){
				url = WEBROOT +'/cart/addToCart/newDomain/' + domain;
							
				var ajax = new Ajax.Request(url, {
					onComplete: function(transport){
							
						if(transport.responseText.startsWith('Full cart'))
						{
							alert('Your cart is full, please empty it or proceed to payment before');
							return false;
						}
						else{
							
							if (transport.responseText.match(/[0-9]*/))
							{
								EuroDNS.Cart.updateViewCartTab(transport.responseText);
							} else {
								EuroDNS.Cart.updateViewCartTab('inc');
							}
							
							if($('smallCart'))
							{
								var ajax = new Ajax.Updater('smallCart', WEBROOT + '/cart/viewSmallCart', {evalScripts:true});
								var num = parseInt(transport.responseText);
								EuroDNS.Cart.updateViewCartTab(num);
							}
							
							
							$('cart_' + domain).innerHTML = '<img src="' + IMGROOT + '/icons/cart.png" onClick="EuroDNS.DomainSearch.deleteFromCart(\'' + domain + '\')">';
							$('cart_' + domain).addClassName('inCart');


							//if we are adding a .asia domain add the asia.com to the cart as well
							/*
							if(tld == 'asia' && !$('cart_' + dom + '_asia_com').hasClassName('inCart')){
									newDomain = dom + '_asia_com';
									EuroDNS.DomainSearch.addToCart(newDomain);
							}
											
							if(tld == 'asia_com' && !$('cart_' + dom + '_asia').hasClassName('inCart')){
									newDomain = dom + '_asia';
									EuroDNS.DomainSearch.addToCart(newDomain);
							}
							*/
						}
					}
				});
			}
	},
	
	addAllCheckedToCart: function()
	{
		if(!searchInProgress)
		{
			$('searchResultsForm').request({
				onComplete: function(transport){
					EuroDNS.DomainSearch.addedToCart();
					EuroDNS.DomainSearch.checkAll();
					EuroDNS.DomainSearch.uncheckAll();
				}
			});
		}	
	},
	
	
	deleteFromCart: function(domain){
		
		items = domain.split('_');
			dom = items.shift();
			
			tld='';
			for(i=0;i<items.length;i++){
				if(tld.length>0){
					tld = tld + '_';
				}
				tld = tld + items[i];	
			}
		

			url = WEBROOT + '/cart/deleteItem/new/' + domain;
		
		
			var ajax = new Ajax.Request(url, {
				onComplete: function(transport){
					$('cart_' + domain).innerHTML = '<input type="checkbox" name="data[CartForm][' + domain +']" id="data[CartForm][' + domain +']" value="newDomain" onClick="EuroDNS.DomainSearch.addToCart(\'' + domain + '\')" class="addItemToCart">';
					$('cart_'+ domain).removeClassName('inCart');
					
					var ajax = new Ajax.Updater('smallCart', WEBROOT + '/cart/viewSmallCart', {evalScripts:true});
					//var num = parseInt('dec');
					if($('viewCartTab')){
						EuroDNS.Cart.updateViewCartTab('dec');
					}
				}
			});
			
			
			/*
			if(tld == 'asia'){
				newDomain = dom + '_asia_com';
				this.deleteFromCart(newDomain);
			}
			*/

	
			
		if ($('checkAllBottom')){$('checkAllBottom').show();}	
		if ($('checkAllTop')){$('checkAllTop').show();}
	},
	
	advancedSearchObserve: function(){
		EuroDNS.DomainSearch.highlightTab('advancedSearch');
		Event.observe($('advancedsearchfield'),'change',EuroDNS.DomainSearch.checkSearchLoad.bindAsEventListener(this));
		$$('.tldList').each(function(el){
			el.observe('click',function(el){
				EuroDNS.DomainSearch.checkSearchLoad();
			});
		});
		$('searchesAvailable').show();
		$('searchLoad').innerHTML='0';
	},
	
	checkSearchLoad: function(){
		l_str = $('advancedsearchfield').value;
		l_str = l_str.replace(/\n/g,';');
		var searchLoad=0;
		var searchlimit = $('searchLimit').innerHTML;
		if (l_str.length>0){
			domains = l_str.split(';');
			domainCounter=0;
			for(i=0;i<domains.length;i++){
				if (domains[i] !== ''){
					domainCounter++;
				}
			}
			tldCount=0;
			$$('.tldList').each(function(el){
				if (el.checked){tldCount++;}
			});
	 		searchLoad = domainCounter * tldCount;
			$('searchLoad').innerHTML = searchLoad;
		}
		else{
			$('searchLoad').innerHTML = 0;
		}
		
		if (searchLoad>searchlimit){
			//$('domainSearchButton').hide();
			$('searchLoad').style.color='red';
			$('searchLoad').style.fontWeight='bold';
			return false;
		}		
		else{
			//$('domainSearchButton').show();
			$('searchLoad').style.color='black';
			$('searchLoad').style.fontWeight='';
			return true;
		}
		
	},
	
	addedToCart: function(){
		if($('smallCart'))
		{
			var updater = new Ajax.Updater('smallCart', WEBROOT + '/cart/viewSmallCart', {onLoading: function(){$('smallCart').innerHTML = '<img src="' + IMGROOT + '/cart-loader.gif" />'} });
		}
		
		$$('.domSearching').each(
		function(div){
			if (div.down() && div.down().checked){
				elm=div.id.split('_');
				elm.shift();
				domain=elm.join('_');
				$(div).innerHTML = '<img src="' + IMGROOT + '/icons/cart.png" onClick="EuroDNS.DomainSearch.deleteFromCart(\'' + domain + '\')">';
				if($('viewCartTab'))
				{
					EuroDNS.Cart.updateViewCartTab('inc');
				}
			}
		});

		var atct = $('addToCartTop');
		if (atct){atct.hide();}
		var atcb = $('addToCartBottom');
		if (atcb){atcb.hide();}

		var cb = $$('.addItemToCart');
		if (!cb || cb.length < 1)
		{
			var uab = $('uncheckAllBottom');
			if (uab){uab.hide();}
			var uat = $('uncheckAllTop');
			if (uat){uat.hide();}
		}
	},
	
	highlightTab: function(mode){
		$('normalSearch').removeClassName('tabHighlight').removeClassName('tabHighlight');
		$('bulkSearch').removeClassName('tabHighlight').removeClassName('tabHighlight');
		$('advancedSearch').removeClassName('tabHighlight').removeClassName('tabHighlight');
		if (mode && $(mode)){$(mode).addClassName('tabHighlight');}
	},
	
	showTabs: function(){	
		$('addToCartNoJs').hide();
		$('bottomTabs').show();	
		$('topTabs').show();	
	},
	
	toggleTakenDomains: function()
	{
		if(!searchInProgress)
		{
			$$('.searchresultsholder .data > tbody > tr ').each(function(element){
				element = $(element);
				var successElements = element.getElementsByClassName('freestatus');
				if (successElements.length < 1){
					element.toggle();
				}
			});
		}
	},
	
	toggleUnknownResults: function()
	{
		if(!searchInProgress)
		{
			$$('.searchresultsholder .data > tbody > tr ').each(function(element){
				element = $(element);
				var successElements = element.getElementsByClassName('unknownstatus');
				if (successElements.length > 0){
					element.toggle();
				}
			});
		}
	}
};

/*******************************************************************************/
function searchVaryDisplay(divID,domainStatus){EuroDNS.DomainSearch.searchVaryDisplay(divID,domainStatus);}

function searchFinished(){EuroDNS.DomainSearch.searchFinished();}

function showRestriction(tld) {document.getElementById(tld).style.visibility = "visible";}

function hideRestriction(tld){document.getElementById(tld).style.visibility = "hidden";}

function gif_loading($divs){$($divs).innerHTML = '<img src=\"<?php echo $this->webroot ?>img/ajax-loader.gif\" height=\"20%\"/>';}

function gif_loaded($divs){
	$($divs).style.display = 'none';
	Effect.Appear($divs);
}

function collapse(){
	$$('#resultats dl dd').each(Element.hide);
	Event.observe(document.body, 'click', function(event) {
		var elt = Event.element(event);
		if (elt.tagName == 'DT'){
			$(elt).next('dd').toggle();
		}
	});	
}

function showDialog($url, $width){
	Dialog.alert({url: $url, options: {method: 'post', evalScripts: true }}, {className: "alphacube", width:$width, okLabel: "Close"});
}


EuroDNS.Tags = {
	addTagFromField: function(fieldFrom, fieldTo, flush){
		var text = $(fieldFrom);
		if (!text) { return; }
		text = text.value;
		if (text != ''){$(fieldTo).value += text + ' / ';}
		if (flush) { $(fieldFrom).clear(); }
	},

	openTrash: function(){
		$('tagsTrashImage').setAttribute('src', IMGROOT + '/icons/trash_open.png');
	},

	closeTrash: function(){
		$('tagsTrashImage').setAttribute('src', IMGROOT + '/icons/trash_empty.png');
		$('tag_results').update('');
	},

	updateTags: function(param, id){
		if (id == null) { id = 'tag_list'; }
		var ajax = new Ajax.Updater(id, WEBROOT + '/tags/cloud')
	},	
	
	trashHover: function(draggable, droppable){
		EuroDNS.Tags.openTrash();
	},
	
	trashDrop: function(draggable, droppable, event){
		Event.stop(event);
		if (draggable.hasClassName('tagAssociation')){
			var associateIDs = [];
			draggable.id.scan(/tag(Post|Faqentry)Associate-(\d+)-(\d+)/, function(match){
											associateIDs.push([match[1], match[2], match[3]]);
								});

			if (associateIDs.length == 1 && confirm('Are you sure to delete this association ?')){
				var ajax = new Ajax.Updater('tag_list', WEBROOT + '/admin/tags/deleteAssociation/' + associateIDs[0][0] + '/' + associateIDs[0][1] + '/' + associateIDs[0][2],
							{
								evalScripts: true,
								onComplete: EuroDNS.Tags.closeTrash
							});
				return false;
			}

		}
		else{
			var tagIDs = [];
			draggable.id.scan(/tag(.+)/, function(match){
											tagIDs.push(match[1]);
								});

			if (tagIDs.length == 1 && confirm('Are you sure to delete tag ?')){
				var updater = new Ajax.Updater('tag_list', WEBROOT + '/admin/tags/delete/' + tagIDs[0],
							{
								evalScripts: true,
								onComplete: EuroDNS.Tags.closeTrash
							});
			}
			return false;
		}
	}
};


EuroDNS.FAQ = {
	globalTldTextToolTip: 'globalTldTextToolTip',
	
	categoriesList: function () { return $$('li.faq_folder'); },
	
	categoriesLinks: function () { return $$('li.faq_folder a'); },
	
	currentCategories: function () { return $$('li.faq_folder.selected'); },
	
	highlightCategories: function(selected){
		this.currentCategories().each(function(element) { element.removeClassName('selected'); } );
		var categories = this.categoriesLinks();
		if (!selected) { return; }
		categories.each(function(element)
						{
							var location = ''+element.readAttribute('href');
							if (location == '' || location == 'blank' || location == '_blank') { return; }

							var thisCategoryID = location.gsub(/.*\/([^\/]+)$/, function(match){return match[1];});
							if (thisCategoryID != '' && selected.indexOf(thisCategoryID) != -1){
								var parent = element.up('li', 0);
								if (!parent.hasClassName('selected')) { parent.addClassName('selected'); }
							}
						});
	},
	
	showResponseForTld: function(event){
		tld = Event.element(event).getValue();
		if (tld != null && tld != 'null'){
			tldText = $('responseForTld'+tld).innerHTML;
			Element.replace('response_result', '<div id="response_result">' + tldText + '</div>');
		}
	},

	addAndFocusEditor: function(element){
		element = $(element);
		tinyMCE.execCommand("mceAddControl", false, element.id);
		tinyMCE.getInstanceById(element.id).contentWindow.focus();
	},
	
	replaceTextFrom: function(event, dest){
		tld = Event.element(event).getValue();
		if (tld != null && tld != 'null'){
			if (tinyMCE && tinyMCE.getInstanceById('Faqresponse_' + tld + '_text')){
				newText = tinyMCE.getContent('Faqresponse_' + tld + '_text');
			}
			else{
				newText = $('Faqresponse_' + tld + '_text').getValue();
			}
			mce = tinyMCE.getInstanceById(dest);
			if (tinyMCE && mce){mce.setContent(dest);}
			else{$(dest).value = newText;}
			Event.element(event).selectedIndex = 0;
			if (newText.length > 0) { new Effect.Highlight(dest); }
			destTld = [];
			$(dest).id.scan(/Faqresponse_(.*)_text/, function(match){ destTld.push(match[1]);});
			EuroDNS.FAQ.updateTldStatus(destTld[0]);
		}
	},
	
	updateTldStatus: function(tld, event){
		tldText = $('Faqresponse_' + tld + '_text').getValue();
		$('tldStatus_' + tld).setAttribute('title', tldText);
		tldTextLength = tldText.length;
		if (event && event.keyCode && (event.keyCode == Event.KEY_DELETE || event.keyCode == Event.KEY_BACKSPACE)){tldTextLength -= 1;}
		if (tldTextLength > 0){$('tldStatus_' + tld).setStyle({color: 'green'});}
		else {$('tldStatus_' + tld).setStyle({color: 'red'});}
	},

	toggleContainer: function(idPart){
		container = $(idPart + 'Container');
		if (!container) { return false; }
		container.toggle();
		if (container.visible()){
			image = $(idPart + 'TogglerImage');
			if (image) { image.setAttribute('src', IMGROOT + '/icons/zoom_out.png'); }
		}
		else{
			image = $(idPart + 'TogglerImage');
			if (image) { image.setAttribute('src', IMGROOT + '/icons/zoom_in.png'); }
		}
	}
};

EuroDNS.FAQ.Chart = Class.create();
EuroDNS.FAQ.Chart.prototype = {
	chart: null,

	chartElementID: null,

	jsonChartObject: null,

	updateURL: null,
	
	initURL: null,

	initialize: function(elementID, initURL, updateURL){
		var element = $(elementID);
		this.chartElementID = element.id;
		this.initURL = initURL;
		this.updateURL = updateURL;
		this.canvasParent = element.up();
		this.canvasDims = { width:this.canvasParent.getWidth(), height:this.canvasParent.getHeight() };

		ajax = new Ajax.Request(WEBROOT + initURL,
								{
									method: 'post',
									evalScripts:true,
									onComplete: this.updateChartFromAjax.bind(this)
								});
	},

	setChartType: function(type){
		this.jsonChartObject.chartType = type;
		switch (this.jsonChartObject.chartType){
			case 'line':
				this.chart = new Plotr.LineChart(this.jsonChartObject.chartID, this.jsonChartObject.options);
				break;
			case 'pie':
				this.chart = new Plotr.PieChart(this.jsonChartObject.chartID, this.jsonChartObject.options);
				break;
			default:
			case 'bar':
				this.chart = new Plotr.BarChart(this.jsonChartObject.chartID, this.jsonChartObject.options);
			break;
		}
	},
	
	chartReload: function(render){
/*
		var oldCanvas = $('canvasParent');
		var newCanvasParent = oldCanvas.parentNode;
		var newCanvasDiv = document.createElement('div');
		newCanvasDiv.id = 'canvasParent';
*/
		var statsTitle = $('statsTitle');
		if (statsTitle){
			if (this.jsonChartObject.title){
				statsTitle.show();
				statsTitle.update(this.jsonChartObject.title);
			}
			else{statsTitle.hide();}
		}
/*
		var newCanvas = document.createElement('canvas');
*/
		newCanvas = $('userStats');
		newCanvasDiv = $('canvasParent');
		newCanvasDiv.setStyle({width:'550px'});
		newCanvas.setAttribute('width', '540');
		newCanvas.setAttribute('height', '300');
		newCanvas.id = this.chartElementID;
		Element.setStyle(newCanvas, { border: '1px solid #eee' });

/*
  		newCanvasDiv.appendChild(newCanvas);
		newCanvasParent.appendChild(newCanvasDiv);
		Element.remove(oldCanvas);
*/
		if (render){
			this.setChartType(this.jsonChartObject.chartType);
			this.chart.addDataset(this.jsonChartObject.datasets);
			this.chart.render(this.chartElementID, this.jsonChartObject.options);
		}
	},

	updateChartFromAjax: function(request, json)
	{
		this.jsonChartObject = json;
		this.chartReload(true);
		if (this.jsonChartObject.title && this.jsonChartObject.title != ''){
			$('ednsfaqstats_title').innerHTML = this.jsonChartObject.title;
		}
		this.setChartType(this.jsonChartObject.chartType);
		this.chart.addDataset(this.jsonChartObject.datasets);
		this.chart.render(this.jsonChartObject.chartID, this.jsonChartObject.options);
	},

	update: function() {
		action = $('chart-chooser').value;
		var chartObject = Object.toJSON(this.jsonChartObject);
		chartObject.xType = '';
		chartObject.yType = '';
		ajax = new Ajax.Updater('canvasParent', this.updateURL + action,
								{
									method: 'post',
									parameters: {chartObject:chartObject},
									evalScripts:true,
									onLoading: function() { Element.show($('loading-chart')); },
									onComplete: this.updateChartFromAjax.bind(this)
								});
	},

	exportCanvas: function(){
		var canvas = $(this.chartElementID);
		if (canvas.toDataURL){
			if (canvas){
				var chartRawImage = canvas.toDataURL();
				var chartDocument = '<html><head><title>' + $('title').innerHTML + '</title></head><body>';
				var padding = 'padding: ' 	+ this.chart.options.padding.top + 'px '
											+ this.chart.options.padding.right + 'px '
											+ this.chart.options.padding.bottom + 'px '
											+ this.chart.options.padding.left + 'px; ';
				var margin = 'margin: -5px 0px 0px 0px;';
				chartDocument 	+= '<img src="' + chartRawImage + '"'
								+  ' width="'   + Element.getStyle(canvas, 'width') + '"'
								+  ' height="'  + Element.getStyle(canvas, 'height') + '"'
								+  ' style="'   + margin + '"/>';
				Element.remove(canvas);
				chartDocument += $('canvasParent').innerHTML;
				chartDocument += '</body></html>';
				Element.remove('canvasParent');
				var textareaParent = document.createElement('div');
				var textareaExplain = document.createElement('div');
				Element.setStyle(textareaExplain, {margin:'10px'});
				textareaExplain.innerHTML = 'Please copy this text and paste it as a new HTML document.';
				var textarea = document.createElement('textarea');
				textarea.value = chartDocument;
				textarea.cols = 100;
				textarea.rows = 10;
				textarea.setAttribute('readonly', true);
				textareaParent.appendChild(textarea);
				textareaParent.appendChild(textareaExplain);
				$('container').appendChild(textareaParent);
				if (Prototype.Browser.Gecko){
					textarea.selectionStart = 0;
					textarea.selectionEnd = textarea.value.length - 1;
				}
			}			
		}	
		else{
			alert('Sorry, your browser do not know this feature !\n' +
		     	  'Please use a standard compliant browser such as Firefox, Safari or Opera.');
		}
	}
};	

EuroDNS.Services = {
	toggle: function (id, event){
		$$('#'+id + ' > *').each(Element.toggle);
		return ! $(id).innerHTML.empty();
	},
	
	resetReference: function(id)
	{
		$$('#'+id + ' option').each(function(optionElement){optionElement.removeAttribute('selected');});
		$(id).selectedIndex = 0;
		$(id).value = 0;
	}
};


EuroDNS.Posts = {
	updateImage: function (element, destination){
		$(destination).setAttribute('src', IMGROOT + '/posts/' + element.getValue());
	}
};


EuroDNS.Pendings = {
	highlightTab: function (mode){
		elm = mode + 'TopTab';
		$(elm).removeClassName('checkalltoptab');
		$(elm).addClassName('checkalltoptabSelected');
		
		elm = mode + 'BotTab';
		$(elm).removeClassName('checkallbottab');
		$(elm).addClassName('checkallbottabSelected');
	}
};


EuroDNS.VatToggler = {
	state: true,

	toggle: function(){
		EuroDNS.VatToggler.state = !EuroDNS.VatToggler.state;
		EuroDNS.VatToggler.togglePagePrices();
		var image = $('vat-toggler');
		if (image){
			EuroDNS.VatToggler.toggleImage();
		}
	},
	
	togglePagePrices: function(){
		$$('.vat-on').each(function(element)
								 {
									element = $(element);
									if (element.hasAttribute('style')){
										element.removeAttribute('style');
									}
									if (EuroDNS.VatToggler.state){
										element.setStyle({display:'none'});
									}
									else{
										element.setStyle({display:'block'});
									}
								 });
		$$('.vat-off').each(function(element){
								element = $(element);
								if (element.hasAttribute('style')){
									element.removeAttribute('style');
								}
								if (!EuroDNS.VatToggler.state){
									element.setStyle({display:'none'});
								}
								else{
									element.setStyle({display:'block'});
								}
							});
	},
	
	toggleImage: function(){
		var vat = {};
		if (!this.state){vat = { image:'vat_on.png', alternate:'Vat On' };}
		else{vat = { image:'vat_off.png', alternate:'Vat Off' };}
		var vatTogglerImage = $('vat-toggler');
		vatTogglerImage.setAttribute('src', IMGROOT + '/prices/' + vat.image);
		vatTogglerImage.setAttribute('alt', IMGROOT + '/prices/' + vat.alternate);
	}
};

EuroDNS.ImagePreview = {
	insertImage: function(event, dest){
		imageLi = Event.element(event);
		$(dest).value = imageLi.src;
	}
};

EuroDNS.TldInformation = {
	tldInfosForm: function() { return $('tldInfos'); },

	getInfosToForm: function(event, tld_id){
		var tld	= 0;
		if (tld_id == null){
			var el = Event.element(event);
			tld = el.value || el.getValue();
		}
		else{
			tld = tld_id;
		}
		var ajax = new Ajax.Request(WEBROOT + '/admin/tldinformations/getJsTldInfos/'+tld, { onComplete: function(req, json)
																					 {if (json){EuroDNS.TldInformation.setInfosToForm(json);}}
																		});
	},
	
	setInfosToForm: function(tldInfos){
		if (!tldInfos.Tldomain){return false;}
		var formElementsSelector = 	'#'+this.tldInfosForm().id + ' textarea, ' +
									'#'+this.tldInfosForm().id + ' input, ' + 
									'#'+this.tldInfosForm().id + ' select, ' + 
									'#'+this.tldInfosForm().id + ' iframe';
		var formElements = $$(formElementsSelector).reject(function(n){return (n.hasClassName('mceSelectList') || n.getAttribute('type') == 'submit');});
		var formElementsToHighlight = [];
		formElements.each(function(element, index){
			switch(element.id){
				case 'tldInfo_tld_id':
					element.value = tldInfos.Tldomain.ID;
				break;
				case 'tldInfo_tld_name':
					element.value = tldInfos.Tldomain.name;
				break;
				case 'tldInfo_registry':
					element.value = tldInfos.Registrar.nom;
					formElementsToHighlight.push(element);
				break;
				case 'tldInfo_website':
					element.value = tldInfos.Registrar.url;
					formElementsToHighlight.push(element);
				break;
				case 'tldInfo_status':
					element.value = tldInfos.Tldomain.actif;
					formElementsToHighlight.push(element);
				break;
				case 'tldInfo_country':
					element.value = tldInfos.Tldomain.country;
				break;
				case 'tldInfo_restrictions':
					element.value = tldInfos.Tldomain.restrictionInfo;
				break;
				case 'tldInfo_uses':
				case 'tldInfo_document':
				case 'tldInfo_dispute_policies':
				case 'tldInfo_commercial_text':
					element.value = '';
				break;
				case 'tldInfo_image':
					element.value = IMGROOT + '/lang/' + tldInfos.Tldomain.countryCode + '.gif';
					$('tldInfo_imageTag').setAttribute('src',element.value);
					formElementsToHighlight.push(element);
				break;
				default:
					formElementsToHighlight.push(element);
				break;
			}
			tinyMCE.updateContent(element.id);
		});
		
		formElementsToHighlight.each(function(element){EuroDNS.TldInformation.markElement(element);});
	},
	
	markElement: function(element){
		element.addClassName('tldMarked');
		Event.observe(element, 'focus', function(event){Event.element(event).removeClassName('tldMarked');});
	},
	
	initFlags: function(selector){
		var flags = $$(selector).reverse();
		if (flags.length < 1) { return false; }
		var factor = $('container_contents_body').getWidth() / flags.length;
		var newWidth = factor;
		var newHeight = factor;
		var posX = $('container_contents_body').offsetLeft + 10;
		var posY = $('container_contents_body').offsetTop + 10;
		flags.each(function(element){
									var style = {
													'width': newWidth,
													'height': newHeight,
													'position': 'absolute',
													'top': posY,
													'left': element.offsetLeft
												};
									element.setStyle(style);
									//posY += newHeight;
									});
	},
	
	scaleFlag: function(event){
		var el = Event.element(event);
		if (el.getHeight() < 150){
			Effect.Scale(el, 150, { scaleMode:{ originalHeight: 90, originalWidth: 100 }, scaleFromCenter:true, scaleContent:false});
		}
	}
	
};

EuroDNS.Profiles = {};

EuroDNS.Profiles.Server = {
	start: function(){
		$$('#serverProfileForm button').each(function(element){
			element = $(element);
			if (element.id != 'ServerProfileSave'){
				element.type = 'button';
				element.hide();
			}
		});
		$$('.deleteNameServer').each(function(element){
			var element = $(element);
			element.show();
			element.next().hide();
			Event.observe(element, 'click', function(event){
				var element = Event.element(event);
				if (element.id){
					element.id.scan(/data\[NameServerForProfile\]\[(\d+)\]\[delete\]/, function(match){EuroDNS.Profiles.Server.deleteServer(match[1]);});
				}
			});
		});
		$$('.addNameServer').each(function(element){
			var element = $(element);
			Event.observe(element, 'click', EuroDNS.Profiles.Server.addServer);
			element.show();
		});
	},	
	
	addServer: function(){
		var form = Form.serialize($('serverProfileForm'));
		var ajax = new Ajax.Updater('container_contents_body', '/profiles/editServerProfile/'+$('NameServerProfileId').getValue()+'/addServer',
						{
							parameters: form,
							onComplete:EuroDNS.Profiles.Server.start
						});
	},
	
	deleteServer: function(servNum){
		var rows = $$('.NameServerForProfile-'+servNum);
		if (rows && rows.length > 0){
			rows.each(function(element){
				element = $(element);
				element.remove();
			});
		}
	}	
};

EuroDNS.Profiles.Contact = 
{
	loadContactProfileIDToForm: function(contactID, base)
	{
		if (contactID.length == 0 || contactID == 0)
		{
			//alert ('Please choose a contact from the list');
		}
		else
		{		
			var ajax = new Ajax.Request('/contactProfiles/infos/'+contactID, 
			{
				method: 'post',
				onComplete: function(request, json)
				{
					if (json && json.ContactProfile)
					{
						$H(json.ContactProfile).each(function(part)
						{
							var info = false;
								
							switch (part.key)
							{
								case 'country_code':
									$(base + 'CountryCode').value = part.value;
								break;
								
								case 'entity':
									$(base + 'Entity').value = part.value;
								break;
								
								default:
									info = $(base + part.key.capitalize());
								break;
							}						
							
							if (info) 
							{							
								if (info.readOnly == false)
								{
									info.value = part.value;
								}
							}
						});
					}
					else 
					{					
						//alert('Could not load the selected profile');
					}
				}
			});
		}
		
		
		
	}
};

EuroDNS.Offers = {
	initActiveTogglers: function(selector){
		$$(selector).each(function(element){
			element = $(element);
			element.observe('change', function(event){EuroDNS.Offers.toggleActive(Event.element(event).id);Event.stop(event);});
		});
	},
	
	toggleActive: function(elementID){
		var offerID = elementID.split('-');
		var ajax = new Ajax.Updater(elementID, '/admin/offers/toggleActive/'+offerID[1], {evalScripts: true});
	}
};

function previewAlert(extractID, fulltextID, url){
	if (tinyMCE){
		bodyValue = tinyMCE.getInstanceById(extractID);
		if (bodyValue) { bodyValue = bodyValue.getHTML(); }
		fulltextValue = tinyMCE.getInstanceById(fulltextID);
		if (fulltextValue) { fulltextValue = fulltextValue.getHTML(); }
	}
	else{
		bodyValue = $(extractID).getValue();
		fulltextValue = $(fulltextID).getValue();
	}
	Dialog.alert({url: url, options: {method: "post", evalScripts: true, parameters: { body: bodyValue, fulltext: fulltextValue } }}, {className: "alphacube", okLabel: "Close"}); return false;
}	

// Binding des fonction avec les evenements
Event.observe(window, 'load', EuroDNS.Site.init);