﻿Event.observe(document, LICENSE.LOGINSHOW, LoginProcedure); 
Event.observe(document, LICENSE.LOGINHIDE, AnimatedHideLogin);   

//Event.observe(document, HEALTH.SESSIONFAILURE, ShowErrorPanel);      
//Event.observe(document,HEALTH.NETWORKFAILURE, ShowErrorPanel);    
//Event.observe(document,HEALTH.PERMANENTNETWORKFAILURE, ShowErrorPanel);        
//Event.observe(document,HEALTH.SESSIONHEALTHY, ShowErrorPanel);  
//Event.observe(document, LICENSE.LOGINMESSAGE, ShowErrorPanel);

var viewportleftvalue;
var viewportrightvalue;
var allowtogglelanguage = true;

function LoginProcedure()
{
	InitLoginLayer(); 
	Event.observe(window, "resize", SetLoginElements); 
}

function InitLoginLayer()
{
  SetLoginElements(true);  	
}

function SetLoginElements(init)
{ 
  var pageheight = parseInt(document.body.clientHeight);
  var pagewidth = parseInt(document.body.clientWidth);
  
  var viewport = $("viewport");
  var lineleft = $("lineleft");
  var lineright = $("lineright");
  var logo = $("logo");
  var viewportinner = $("viewportinner");
  var loginbackground = $("loginbackground");
  var loginarea = $("loginarea");
  var logo2 = $("logo2");
  var watermark = $("watermark");
  var copy = $("copyrighttext");
  var logintitle = $("logintitle");
  var pwdrecoverypanel = $("pwdrecoverypanel");
  var errorpanel = $("errorpanel");
  
  viewportleftvalue = (pagewidth / 2) - (Element.getWidth(viewport) / 2);
  viewportrightvalue = (pagewidth / 2) + (Element.getWidth(viewport) / 2);
  
   
  if (viewport) {  	
    viewport.style.height = pageheight + "px";
    viewport.style.left = viewportleftvalue + "px";
  }  
  if (lineleft) {
  	 if (lineleft.getAttribute("status") == "expanded") {
  	 	  lineleft.style.left = "4px"; 
  	 } else {
       lineleft.style.left = viewportleftvalue + "px";    	
     }
  }  
  if ((lineright) && (logo)) {
  	if (lineright.getAttribute("status") == "expanded") {
  	 	 lineright.style.left = (pagewidth - 4) + "px"; 
  	 	 logo.style.left = "10px";
  	 } else {
       lineright.style.left = viewportrightvalue + "px";   
       logo.style.left = (viewportrightvalue - Element.getWidth(logo)) + "px";   
     }	
  }
  
  if (watermark) {
    watermark.style.top = pageheight - Element.getHeight(watermark) + "px";
    watermark.style.left = viewportrightvalue - Element.getWidth(watermark) + "px";   	
  }
  
  
  if (viewportinner) {
     viewportinner.style.top = (pageheight / 4) + "px"; 
     viewportinner.style.left = viewportleftvalue + "px";
     viewportinner.style.width = Element.getWidth(viewport) + "px";	
  }
  
  if ((loginbackground) && (loginarea) && (logintitle) && (pwdrecoverypanel) && (logo2)) {
  	var logintopvalue = (pageheight / 4) + 80;
  	var loginleftvalue = (pagewidth / 2) - (Element.getWidth(viewport) / 2) + 70;
    
    loginbackground.style.top = logintopvalue + "px";
    loginbackground.style.left = loginleftvalue + "px";
    
    loginarea.style.top = logintopvalue + "px"; 
    loginarea.style.left = loginleftvalue + "px";  
    
    logo2.style.top = logintopvalue + Element.getHeight(loginarea) + 8 + "px";
    logo2.style.left = loginleftvalue + Element.getWidth(loginarea) - Element.getWidth(logo2) + "px";
    copy.style.top = (pageheight - Element.getHeight(copy)) + "px";
     
    logintitle.style.top = logintopvalue - Element.getHeight(logintitle) + 5 + "px"; 
    logintitle.style.left = loginleftvalue + "px";
    var lw = Element.getWidth(loginarea) - 8;
    if (lw < 0) { 
    	lw = 0; 
    }
    logintitle.style.width = lw + "px"; 
    
    pwdrecoverypanel.style.left = (loginleftvalue) + (Element.getWidth(loginarea)) - ((Element.getWidth(pwdrecoverypanel)/2)) - 2 + "px";
    pwdrecoverypanel.style.top  = logintopvalue + 170 + "px"
  }
  
  if (errorpanel) {
    errorpanel.style.top = (pageheight / 2) - (Element.getHeight(errorpanel) / 2) + "px";
    errorpanel.style.left = (pagewidth / 2) - (Element.getWidth(errorpanel) / 2) + "px";	
  } 
  
  if (init==true) {
  	Element.show(logo);
  	Element.show(logo2);
  	Element.show(copyrighttext);
    Element.show(viewport);
    Element.show(lineleft);
    Element.show(lineright);
    Element.show(watermark);
    Element.show(viewportinner);
    Element.show(loginbackground);
    Element.show(loginarea);
    Element.show(logintitle);
  }
}

function ShowErrorPanel()
{
	if (this.Effect) {
	  Effect.Appear("errorpanel", {duration: 0.5, afterFinish:FocusOkButton});	
	} else {
	  Element.show("errorpanel");
	  FocusButton();
	}		
}

function HideErrorPanel()
{
	if (this.Effect) {
	  Effect.Fade("errorpanel", {duration: 0.5, afterFinish: FocusAndSelectInitField});	
	} else {
	  Element.hide("errorpanel");	
	}			
}

function FocusOkButton()
{
  var btn = $("HideMessageButton");
  if ((btn) && (btn.focus)) {
    btn.focus();   	
  }  
}

function FocusAndSelectInitField()
{ 
  var userinput = $("id");
	if ((userinput) && (userinput.focus) && (!userinput.disabled)) {
	  userinput.focus();
	  if (userinput.createTextRange) {
	    var range = userinput.createTextRange();	
	    range.moveStart("character", 0);
	    range.moveEnd("character", userinput.value.length - 1);
	    range.select();
	  }
	}
}

function AnimatedHideLogin(event)
{
  var pageheight = parseInt(document.body.clientHeight);
  var pagewidth = parseInt(document.body.clientWidth);
  var viewport = $("viewport");
  var lineleft = $("lineleft");
  var lineright = $("lineright");
  var logo = $("logo");
  var logo2 = $("logo2");
  var viewportinner = $("viewportinner");
  var loginbackground = $("loginbackground");
  var loginarea = $("loginarea");
  var logintitle = $("logintitle");
  var pwdrecoverypanel = $("pwdrecoverypanel");
  var errorpanel = $("errorpanel");	
  var watermark = $("watermark");
  
  if (errorpanel) 			{ Element.hide(errorpanel) }
  if (pwdrecoverypanel) { Element.hide(pwdrecoverypanel) }
  if (logo2)						{ Effect.Fade(logo2, {duration:0.5}) }
  if (logintitle) 			{ Effect.Fade(logintitle, {duration:0.5}) }
  if (loginarea) 				{ Effect.Fade(loginarea, {duration:0.5}) }
  if (loginbackground) 	{ Effect.Fade(loginbackground, {duration:0.5}) } 
 	if (viewportinner) 		{ Effect.Fade(viewportinner, {duration:0.5}) }
 	if (lineleft) { new Effect.Move(lineleft, { x: 4, y: 0, mode: 'absolute' }); lineleft.setAttribute("status", "expanded"); }
 	if (lineright) { new Effect.Move(lineright, { x: (pagewidth - 4), y: 0, mode: 'absolute' }); lineright.setAttribute("status", "expanded"); lineright.setAttribute("status", "expanded"); }	
 	if (watermark) { new Effect.Move(watermark, { x: (pagewidth - Element.getWidth(watermark)- 4), y: (pageheight - Element.getHeight(watermark)) , mode: 'absolute', afterFinish:AfterAnimatedHideLogin });  }	
 	if (logo) { new Effect.Move(logo, { x:0, y:0, mode: 'absolute' }); }
 	if (viewport) { 
 		new Effect.Morph(viewport, { style: 'left:5px;width:' + (pagewidth - 5) + 'px;', duration:1.0 });   		
 		Effect.Fade(viewport, { duration:1.5, afterFinish:function() { event.memo.CallBack(event.memo.StartInfo);} } ); 
  }
}

function AnimatedShowLogin()
{
  var pageheight = parseInt(document.body.clientHeight);
  var pagewidth = parseInt(document.body.clientWidth);
  var viewport = $("viewport");
  var lineleft = $("lineleft");
  var lineright = $("lineright");
  var logo = $("logo");
  var logo2 = $("logo2");
  
  var loginbackground = $("loginbackground");
  var loginarea = $("loginarea");
  var logintitle = $("logintitle");
  var pwdrecoverypanel = $("pwdrecoverypanel");
  var errorpanel = $("errorpanel");    
  if (logo) { new Effect.Move(logo, { x:(viewportrightvalue - Element.getWidth(logo) - 8), y:4, mode: 'absolute' }); }
  if (lineright) { new Effect.Move(lineright, { x: (viewportrightvalue), y: 0, mode: 'absolute' }) }
  if (lineleft) { new Effect.Move(lineleft, { x: viewportleftvalue, y: 0, mode: 'absolute' }) }  
 	 			
 	if (viewport) { 		
 		new Effect.Morph(viewport, { style: 'left:' + viewportleftvalue + 'px;width:' + viewportrightvalue + 'px;', duration:1.0 }); 
 		Effect.Appear(viewport, { duration:1.5, afterFinish:AfterAnimateShowLogin } );   		
  }  
  if (loginbackground) 	{ Effect.Appear(loginbackground, {duration:1.0}) } 
  if (loginarea) 				{ Effect.Appear(loginarea, {duration:1.0}) }
  if (logo2) 		  			{ Effect.Appear(logo2, {duration:1.0}) }
  if (logintitle) 		  { Effect.Appear(logintitle, {duration:1.0}) }
  if (pwdrecoverypanel) { Element.show(pwdrecoverypanel) }
  if (errorpanel) 			{ Element.hide(errorpanel) }
}

function AfterAnimatedHideLogin()
{
  var lineleft = $("lineleft");
  var lineright = $("lineright");
  if ((lineleft) && (lineright)) {
    Element.hide(lineleft);
    Element.hide(lineright);	
  }
}

function AfterAnimateShowLogin()
{ 
  var viewportinner = $("viewportinner");
  if (viewportinner) { 
  	Effect.Appear(viewportinner, { duration: 0.1, afterFinish: function() { Proxy.GetContext().MagmaLicense.LogOff(); }} );
  }
}

function ToggleLanguageList(obj, languagetype)
{
  linkbutton = $(languagetype + "LanguageSelectionLinkButton");
  languagelist = $(languagetype + "LanguageListWrapper"); 
  if ((linkbutton) && (languagelist)) {  
	  if (languagelist.getAttribute("status") == "collapsed") {
	    ShowLanguageList(languagetype);
	  } else {
	    HideLanguageList(languagetype);	
	  }
	}	
}

function ShowLanguageList(languagetype)
{
  if (allowtogglelanguage == true) {
	  linkbutton = $(languagetype + "LanguageSelectionLinkButton");
	  languagelist = $(languagetype + "LanguageListWrapper"); 
	  if ((linkbutton) && (languagelist)) {  
	    if (languagelist.getAttribute("status") != "expanded") { 	
	    	if (languagetype != "login") {
	    		Proxy.SingleInstance.Show("languageselection");
	  		}  
	  	  allowtogglelanguage = false;
	  	  Effect.SlideDown(languagelist,{duration:0.5, afterFinish:AllowToogleLanguages});
	  	  linkbutton.innerHTML =  "▲ Languages";
	  	  languagelist.setAttribute("status", "expanded");
	    }
	  }
	}
}

function HideLanguageList(languagetype)
{
  if (allowtogglelanguage == true) {
	  linkbutton = $(languagetype + "LanguageSelectionLinkButton");
	  languagelist = $(languagetype + "LanguageListWrapper"); 
	  if ((linkbutton) && (languagelist)) {  
	    if (languagelist.getAttribute("status") != "collapsed") { 	  
	  	  allowtogglelanguage = false;
	  	  Effect.SlideUp(languagelist,{duration:0.5, afterFinish:AllowToogleLanguages});
	  	  linkbutton.innerHTML =  "▼ Languages";
	  	  languagelist.setAttribute("status", "collapsed");
	    }
	  }	
	}
}

function AllowToogleLanguages()
{
  allowtogglelanguage = true;	
}


