	function eh(msg) {
		alert('Error [' + msg + ']');
	}
	
	function useLoadingImage(imageSrc) {
	  var loadingImage;
	  if (imageSrc) loadingImage = imageSrc;
	  else loadingImage = "ajax-loader.gif";
	  DWREngine.setPreHook(function() {
	    var disabledImageZone = $('disabledImageZone');
	    if (!disabledImageZone) {
        disabledImageZone = document.createElement('div');
	       disabledImageZone.setAttribute('id', 'disabledImageZone');
	      disabledImageZone.style.position = "absolute";
	      disabledImageZone.style.zIndex = "1000";
	      disabledImageZone.style.left = "0px";
	      disabledImageZone.style.top = "0px";
	      disabledImageZone.style.width = "100%";
        disabledImageZone.style.height = "100%";
		  var imageZone = document.createElement('img');
	      imageZone.setAttribute('id','imageZone');
	      imageZone.setAttribute('src',imageSrc);
	      imageZone.style.position = "absolute";
	      imageZone.style.top = "100px";
	      imageZone.style.right = "50%";
	      imageZone.style.width = "180px";
	      imageZone.style.height = "40px";				
	      disabledImageZone.appendChild(imageZone);
	      document.body.appendChild(disabledImageZone);
	    }
	    else {
	      $('imageZone').src = imageSrc;
	      disabledImageZone.style.visibility = 'visible';
	    }
	  });
	  DWREngine.setPostHook(function() {
	    $('disabledImageZone').style.visibility = 'hidden';
	  });
	}

	function openPhoto (url) {
		win = window.open(url,'OpenNewWin','scrollbars=yes,resizable=yes, width=400, height=350');
		win.focus();
	}
  // Number ////////////////////////////////////////////////////////////////////
  function isNumberKey(field, evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode;
    //alert(String.fromCharCode(evt.charCode));
    //alert("keyCode: " + evt.keyCode +" charCode: "+ charCode);
       if (charCode >= 48 && charCode <=57 || evt.keyCode == 8) {
        removeMessageBox(field);       
        return true;
       } else {
        messageBox(field, 1);
        return false;
       }
  }  
  //////////////////////////////////////////////////////////////////////////////
  // message box ///////////////////////////////////////////////////////////////
  function messageBox(field, type) {
    switch (type){
      case 1: typeTxt = "Αριθμητικό πεδίο";
      break;
      case 2: typeTxt = "Πεδίο ημερομηνίας";
      break;
      default: typeTxt = "Πεδίο κείμενου";
      break;
    }

    Object = document.getElementById(field);
    td     = document.getElementById(field + "_td" );
    msgDiv = document.createElement('div');
    ifdiv  = document.getElementById("div_message_box");
    
    if (ifdiv) {
      td.removeChild(ifdiv);
    } else {
      msgDiv.setAttribute('style', 'position: relative;  top:-25px; left:-236px;  width:240px; height:30px; margin: 0; margin-bottom: -32px; color:#fff; padding:1px; padding-top: 7px; padding-left: 15px; background-image: url("/adedy/adedy_cms_files/static/images/common/msg-bg.gif"); background-repeat: no-repeat; background-position: top left; background-color: transparent;');
      msgDiv.setAttribute('className', 'requiredMsg');
      msgDiv.setAttribute('id', 'div_message_box');
      
      msgDiv.innerHTML = typeTxt;
      td.appendChild(msgDiv);
      Object.setAttribute('style', 'border:1px solid red;');
      Object.setAttribute('className', 'requiredField2');    
    }
  }
  function removeMessageBox(field) {
    var ifdiv  = document.getElementById("div_message_box");
    var td     = document.getElementById(field + "_td" );
      if (ifdiv) {
        td.removeChild(ifdiv);
      } else {
        return;
      }
  }

	// TOOLTIP *********************************************************************
	var DH = 0;
	var an = 0;
	var al = 0;
	var ai = 0;
	
	if (document.getElementById) {
		ai = 1;
		DH = 1;
	} else {
		if (document.all) {
			al = 1;
			DH = 1;
		} else {
			browserVersion = parseInt(navigator.appVersion); 
			if ((navigator.appName.indexOf('Netscape') != -1) && (browserVersion == 4)) {
				an = 1;
				DH = 1;
			}
		}
	}
	
	function fd(oi, wS) {
		if (ai) return wS?document.getElementById(oi).style:document.getElementById(oi);
		if (al) return wS ? document.all[oi].style: document.all[oi]; if (an) return document.layers[oi]; 
	}
	
	function pw() {
		return window.innerWidth != null?window.innerWidth:document.body.clientWidth != null?document.body.clientWidth:null;
	}
	
	function mouseX(evt) {
		if (evt.pageX) 
			return evt.pageX;
		else if (evt.clientX) 
			return evt.clientX + (document.documentElement.scrollLeft ?document.documentElement.scrollLeft : document.body.scrollLeft); 
		else 
			return null; 
	}
	
	function mouseY(evt) {
		if (evt.pageY) 
			return evt.pageY;
		else if (evt.clientY) 
			return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
		else 
			return null;
	}
	function popUp(evt,oi) {
		if (DH) {
			var wp = pw();
			ds = fd(oi,1);
			dm = fd(oi,0);
			st = ds.visibility;
			
			if (dm.offsetWidth) 
				ew = dm.offsetWidth; 
			else if (dm.clip.width) 
				ew = dm.clip.width; 
			
			if (st == "visible" || st == "show") { 
				ds.visibility = "hidden"; 
			} else { 
				tv = mouseY(evt) + 20; lv = mouseX(evt) - (ew/4); 
				
				if (lv < 2) 
					lv = 2; 
				else if (lv + ew > wp) 
					lv -= ew/2; 
				
				if (!an) { 
					lv += 'px'; 
					tv += 'px'; 
				} 
				
				ds.left = lv; 
				ds.top = tv; 
				ds.visibility = "visible"; 
			} 
		} 
	}	
  //////////////////////////////////////////////////////////////////////////////