var AWI = new Object();

var makeRPCcallback;
var statusRPCcallback;

AWI.loginURL  = "/forms/login.asp?embedded=ajax&url=" ;
AWI.loginBean = "/beans/doLogin.asp" ;
AWI.loginCallback = false ;
AWI.rpcTimeout = false ;
AWI.serverTimeout = 10;

AWI.setServerTimeout = function () {
  AWI.rpcTimeout = setTimeout("AWI.loadFromServerFailed()",AWI.serverTimeout * 1000) ;
}

AWI.startServerTimeout = function () {
  if (AWI.rpcTimeout) clearTimeout(AWI.rpcTimeout);
  AWI.setServerTimeout () ;
  var pw = getElement("pleaseWait") ; if (pw) { showElement(pw) }
}

AWI.getTransferFrame = function () {
  var f = getElement("dataTransferFrame") ;
  if (!f) {
    f = document.createElement("iframe") ;
    f.id = "dataTransferFrame" ;
    f.name = f.id ;
    f.style.height = "0px"; f.style.width="0px" ; 
    f.style.border = "none" ;
//    f.style.height = "100px"; f.style.width="100%" ;
    document.body.appendChild(f) ;
  }
  return f ;
}

AWI.loadFromServer = function (u,cb,scb) {
  var f = AWI.getTransferFrame() ;
  makeRPCcallback = cb ;
  if (scb) statusRPCcallback = scb ;
  f.src = u ;
  AWI.startServerTimeout() ;
}

AWI.prepareSubmitForm = function (fid,cb,scb) {
  var f = getCheckElement(fid) ;
  f.submitReturnCallback = cb ;
  f.submitStatusCallback = scb ;
  f.userSubmit = ajaxSubmitForm ;
}

AWI.ajaxSubmitForm = function () { submitToServer(this,this.submitReturnCallback,this.submitStatusCallback) ; }

AWI.submitToServer = function (f,cb,scb) {
  if (!f) return ;
  AWI.getTransferFrame() ;
  f.target = "dataTransferFrame" ;
  makeRPCcallback = cb ;
  statusRPCcallback = scb ;
  AWI.startServerTimeout() ;
  f.submit () ;
}

AWI.loadFromServerComplete = function () {
  clearTimeout(AWI.rpcTimeout); AWI.rpcTimeout = false;
  var pw = getElement("pleaseWait") ; if (pw) { hideElement(pw) }
}

AWI.loadFromServerFailed = function () {
  var dtf = getIframeDocument(getElement("dataTransferFrame")) ;
  if (dtf) { 
    if (dtf.readyState) {
      if (dtf.readyState != "complete") { AWI.setServerTimeout() ; return; }
    }
    if (!dtf.body) { AWI.setServerTimeout() ; return ; }
  }
  var pw = getElement("pleaseWait") ; if (pw) { hideElement(pw) }
  alert ("content load failed");
}

AWI.loadContent = function (url) {
  if (url) AWI.loadFromServer(url,AWI.cbCopyContent) ;
}

AWI.getAjaxContent = function () {
  return getCheckElement("content",getIframeDocument(getElement("dataTransferFrame"))) ;
}

AWI.copyAjaxContent = function (cn) {
  var ifc = AWI.getAjaxContent() ;
  var pgc = getCheckElement(cn) ;
  
  pgc.innerHTML = ifc.innerHTML ;
  AWI.loadFromServerComplete() ;
  AWI.executeScripts(pgc);
}

AWI.cbCopyContent = function () {
  AWI.copyAjaxContent("content") ;
}

AWI.executeScripts = function (dc) {
  var exc = dc.getElementsByTagName("script") ; 
  for (var i = 0 ; i < exc.length ; i++) eval(exc[i].innerHTML) ; 
  
  exc = dc.getElementsByTagName("xscript")
  for (var i = 0 ; i < exc.length ; i++) { eval(exc[i].innerHTML) ; exc[i].innerHTML = ""; }
}

AWI.checkLogin = function () { return readCookie("uid") ? true : false; }

AWI.startLogin = function (afterLoginCB) {
  var myURL ;  
  AWI.loginCallback = afterLoginCB ;
  with (document.location) { myURL = pathname + search + hash; }
  AWI.loadFromServer(loginURL + escape(myURL) + "&lang=" + window.lang,AWI.beforeAjaxLogin) ;
  return false;
}

AWI.beforeAjaxLogin = function () {
  AWI.cbCopyContent();
}

function loginGo() {
  var f = getCheckElement("loginForm");
  if (!f.siEmail.value) { alert("vnesi uporabniško ime"); return ; }
  if (!f.siPassword.value) { alert("vnesi geslo"); return ; }
  f.action = loginBean;
  AWI.submitToServer(f,null,AWI.afterAjaxLogin);
}

AWI.afterAjaxLogin = function (code) {
  AWI.checkStatusError(code); if (code) return ;
  var lcb = AWI.loginCallback ; AWI.loginCallback = false ;
  if (lcb) { lcb(); }
}

AWI.checkStatusError = function (code,fname) {
  AWI.loadFromServerComplete() ;

  if (code) {
    var et = getCheckElement("statusErrorText",getIframeDocument(getElement(fname ? fname : "dataTransferFrame"))) ; 
    alert("Napaka: "+ et ? et.innerHTML : "") ;
  }
}