//  PC-Kiim2008-Engine.js Release 1.00
//  For KIIM2008 engine (http://www.kiim.info/)
//  To be used under a commercial license only.
//  Copyright (c) 1999-2009 Les éditions plaisirs de la connaissance inc.

var cData = "";
var ua = navigator.userAgent.toLowerCase();
var xmlhttp = "";
var kF = new Array();

function KiimAjaxMessage(obj, method, args) {
    if (kF.length > 0) {
        kF.splice(0, kF.length);
    }
    var kmAjaxMsg = new Object();
    kmAjaxMsg.grid = kmGridId;
    kmAjaxMsg.datakey = kmKey;
    kmAjaxMsg.method = method;
    kmAjaxMsg.sourceid = kmCache.cId;
    kmAjaxMsg.oldvalue = "<![CDATA[" + kmCache.cValue + "]]>";
    kmAjaxMsg.newvalue = "<![CDATA[" + args + "]]>";
    kF.push('<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"no\"?>');
    kF.push('<arguments xmlns:tns=\"http:\/\/www.kiim.info\/ajax\/">');
    kF.push(KiimAjaxXml(kmAjaxMsg));
    kF.push('</arguments>');
    return kF.join('');
}
function KiimAjaxXml(data){
   var str = "";
   var i;
   for(i in data){
      str += "<"+ i +">" + kmStripUnicode(data[i]) +  "</"+ i +">";
   }
  return str;
}
function KiimRPC(method,httpmethod,sdata,mode,loadtype,ctx){
   //method = methodname
   //httpmethod = GET/POST/SOAP
   //sdata = String/Soap Message
   //mode  = XML/TEXT
   //loadtype = 0 synchronous / 1 asynchronous
   //ctx = Any data pertinent to the call
   
   xmlhttp = KiimRPCInit();
   switch(httpmethod.toUpperCase()){
   case "GET" :
      if(loadtype == "0") {
	     xmlhttp.open("GET", soapHref, false);
	  }
	  else{
	     xmlhttp.open("GET", soapHref, true);
	  }
	  xmlhttp.setRequestHeader ("Content-Type", "text/plain");
	  xmlhttp.setRequestHeader("Charset", "ISO-8859-1");
	  xmlhttp.setRequestHeader("User-Agent","XMLHTTP/1.0");
   break;
   case "SOAP" :
      if(loadtype == "0"){
	     xmlhttp.open("POST", soapHref, false);
	  }
	  else{
	     xmlhttp.open("POST", soapHref, true);
	  }
	  if(ua.indexOf("mac os x") > -1) {
         xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	  }
	  else{
	     xmlhttp.setRequestHeader("Content-Type", "text/XML; Charset=utf-8");
	  }
	  xmlhttp.setRequestHeader("SOAPAction", baseSoapXMLns + method);
	  xmlhttp.setRequestHeader("User-Agent","XMLHTTP/1.0");
   break;
   case "POST" :
      if(loadtype == "0") {
	     xmlhttp.open("POST", soapHref, false);
	  }
	   else{
	     xmlhttp.open("POST", soapHref, true);
	  }
	  xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	  xmlhttp.setRequestHeader("Content-Type", "text/XML; Charset=utf-8");
   break;
   default :
      xmlhttp.open("GET", soapHref, true);
      xmlhttp.setRequestHeader ("Content-Type", "text/plain; charset=iso-8859-1");
	  xmlhttp.setRequestHeader("User-Agent","XMLHTTP/1.0");
   }
   xmlhttp.onreadystatechange = function() {
      if (xmlhttp.readyState==4) {
      
         if(xmlhttp.status == "200"){
         
          	if(mode.toUpperCase() == "XML") {
			 
			   top.KiimRPCXml(xmlhttp.responseXML,ctx);
			}
	        else{
			   top.KiimRPCText(xmlhttp.responseText,sdata,ctx);
			}
	     }
	     else{
            top.KiimRPCAlert("There was a problem retrieving the XML data: " + xmlhttp.statusText);
	     }
    }  
   };
   try{
      if(httpmethod.toUpperCase() == "GET"){
	     if(ua.indexOf("mac os x") > -1) {
            xmlhttp.send(null);
		 }
		 else{
		    xmlhttp.send();
		 }
	  }
	  else{
         if(ua.indexOf("mac os x") > -1) {
		    sdata = 'message='+escape(sdata);
		 }
	     xmlhttp.send(sdata);
	  }
   }
   catch (e) {
        top.KiimRPCAlert("There was a problem sending the data...");
   }
   return;
}
function KiimRPCAlert(msg){
   alert(msg);
   return true;
}
function KiimRPCDelete(){
   delete xmlhttp;
   delete RPCobj;
   return true;
}
function KiimRPCCallback(dat,str,ctx){

   if(ua.indexOf("windows") > -1) {
      var scriptTag = document.getElementById('JSCallback');
      var head = document.getElementsByTagName('head').item(0);
      if(scriptTag){
	     head.removeChild(scriptTag);
	  }
      script = document.createElement('script');
	  script.setAttribute('id','JSCallback');
	   if(ua.indexOf("windows") > -1) {
		 script.setAttribute('type','text/javascript');
		 if(dat != "null") {
		    script.text = dat + str;
		 }
		 else{
		    script.text = str;
		 }
	  }
	  head.appendChild(script);
  }
  if(ua.indexOf("mac os x") > -1){
     if(typeof window.frames["macCache"] == "undefined"){
        KiimMacIFrame();
		macIFrame = window.frames["macCache"];
     }
     if(dat == "null"){
	    dat = "";
	 }
	 if(str == "null"){
	     str = "";
	 }
	 var objMacDoc = (macIFrame.contentDocument) ? macIFrame.contentDocument : (macIFrame.contentWindow) ? macIFrame.contentWindow.document : (window.frames && window.frames['macCache']) ? window.frames['macCache'].document : (macIFrame.document) ? macIFrame.document  : null;
	 objMacDoc.clear();
	 objMacDoc.open();
     objMacDoc.write('<scr'+'ipt defer="defer" type="text/javascript" id="JSCallback">');
	 objMacDoc.write(dat+str);
     objMacDoc.write('<\/scr'+'ipt>\n');
     objMacDoc.close();
   }
   return;
}
function KiimMacIFrame(){
   var tempIFrame = document.createElement('iframe');
   tempIFrame.setAttribute('id','macCache');
   tempIFrame.setAttribute('name','macCache');
   tempIFrame.setAttribute('src','blank.asp?id=newframe');
   tempIFrame.style.border='0px';
   tempIFrame.style.width='0px';
   tempIFrame.style.height='0px';
   document.body.appendChild(tempIFrame);
   return;
}
function KiimRPCInit(){
   if (window.XMLHttpRequest) {
      RPCobj = new XMLHttpRequest();
   }
   else if (window.ActiveXObject) {
      try{
         RPCobj = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e){}
   }
   return RPCobj;
}
function KiimRPCXml(xmlDoc,ctx){
   var callback = "";
   method = xmlDoc.documentElement.childNodes;
   if (method.item(0).firstChild.nodeName == "SOAP-ENV:Fault"){ 
	  var mFaultCode = xmlDoc.getElementsByTagName("faultcode")[0].firstChild.nodeValue;
	  var mFaultString = xmlDoc.getElementsByTagName("faultstring")[0].firstChild.nodeValue;
	  callback = xmlDoc.getElementsByTagName("callback")[0].firstChild.nodeValue;
	  if(mFaultString != "null"){
         KiimRPCAlert(mFaultString);
	  }
	  if(callback != "null"){
		 KiimRPCCallback("null",callback,ctx);
	  }
   }
   else{
      var js = xmlDoc.getElementsByTagName("js")[0].firstChild.nodeValue;
	  var data = xmlDoc.getElementsByTagName("data")[0].firstChild.nodeValue;
      callback = xmlDoc.getElementsByTagName("callback")[0].firstChild.nodeValue;
	  var cData = xmlDoc.documentElement.firstChild.firstChild.lastChild.lastChild.firstChild;
      if(callback != "null"){
		 KiimRPCCallback(js,callback,ctx);
      }
   }
   KiimRPCDelete();
   return true;
}
function KiimRPCText(str,sdiv,ctx){
   try{
      document.getElementById(""+sdiv+"").innerHTML = str;
   }
   catch(e){}
   KiimRPCDelete();
   return true;
}
// Utils
function KiimStripUnicode(s) {
   o = "";
   for(m=0;s.charAt(m);++m){
      if ( (c=s.charCodeAt(m))<128&&c!=38){
	    o+=s.charAt(m);
      }
      else if (c==38){
	     o+="&";
      }
      else{
	     o+="&#"+c+";";
      }     
    }
    return o;
}
// Soap Objects
function KiimSoapCredentials(licence,userdomain,userenv,username,userpassword,timestamp,usertoken){
  this.licence = licence || 0 ;
  this.userdomain = userdomain ||  "Kiim";
  this.userenv = userenv;
  this.username = userpassword;
  this.userpassword = userpassword;
  this.timestamp = timestamp || Date();
  this.usertoken = usertoken;
  return this;
}
function KiimSoapMessage(methodname){
  this.method = methodname||"listMethods";
  this.params = [];
  return this;
}
KiimSoapMessage.doStructXML = function(data){
  var str = "";
  var i;
  for (i in data){
     str += "<tns:"+ i +">" + KiimStripUnicode(data[i]) +  "</tns:"+ i +">";
  }
  return str;
};
KiimSoapMessage.prototype.addParameter = function(data){
  if (arguments.length===0){
     return;
  }
  this.params[this.params.length] = data;
};
KiimSoapMessage.prototype.setMethod = function(methodName){
  if (!methodName){
     return;
  }
  this.method = methodName;
};
KiimSoapMessage.prototype.xml = function(){
  var method = this.method;
  var xml = "";
  var i;
  var stri;
  xml += '<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"no\"?>';
  xml += '<!--Request From KIIM 2008 SOAP Client Version 12.0 - Revision 2008-03-18 Copyright 1999-2008 Les &Eacute;ditions Plaisirs De La Connaissance Inc.-->';
  xml += '<soap:Envelope xmlns:soap="http:\/\/schemas.xmlsoap.org\/soap/envelope\/" xmlns:xsi="http:\/\/www.w3.org\/2001\/XMLSchema-instance" xmlns:xsd="http:\/\/www.w3.org\/2001\/XMLSchema" xmlns:tns="http:\/\/www.kiim.info\/soap\/">';
  xml += '<soap:Header>';
  xml += '<tns:KiimSoapCredentials>';
  xml += KiimSoapMessage.doStructXML(this.params[0]);
  xml += '<\/tns:KiimSoapCredentials>';
  xml += '<\/soap:Header>';
  xml += '<soap:Body>';
  xml += '<tns:'+method+'>';
  xml += KiimSoapMessage.doStructXML(this.params[1]);
  xml += '<\/tns:'+method+'>';
  xml += '<\/soap:Body>';
  xml += '<\/soap:Envelope>';
  return xml;
};
KiimSoapMessage.prototype.xml2 = function() {
    var method = this.method;
    var xml = "";
    var i;
    var stri;
    xml += '{';
    xml += KiimSoapMessage.doStructXML2(this.params[0]);

    xml += KiimSoapMessage.doStructXML2(this.params[1]);
    xml += '}';
    return xml;
};

KiimSoapMessage.doStructXML2 = function(data) {
    var str = "";
    var i;
    //str += '"' + i +'":' + KiimStripUnicode(data[i]) +'"';
    for (i in data) {
        str += "\"" + i +"\":\"" + KiimStripUnicode(data[i]) +"\"";
    }
    return str;
};

/* Kiim2008.js */

var kmMpWorkspaceH = 0;
var kmMpHeaderAdSpace = 0;
var kmMpMenuBar = 0;
var kmUa = navigator.userAgent.toLowerCase();
var kmState = 'none';

if (!document.all) {
    HTMLElement.prototype.click = function () {
        var evt = this.ownerDocument.createEvent('MouseEvents');
        evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
        this.dispatchEvent(evt);
    };
}
function kmDisableEnter(e) {
    var key;
    if (window.event) {
        try {
            key = window.event.keycode;
        }
        catch (e) {
            key = e.charCode;
        }
    }
    else {
        key = e.which;
    }
    if (kmUa.indexOf("safari") != 0) {
        key = e.charCode;
    }
    if (key == 13) {
        return false;
    }
    else {
        return true;
    }
}
function kmCenterPopUp(mypage, myname, w, h, scroll, lbl, col) {
    var winl = (screen.width - w) / 2;
    var wint = (screen.height - h) / 2;
    winprops = 'height=' + h + ',width=' + w + ',top=' + wint + ',left=' + winl + ',scrollbars=' + scroll + ',resizable=yes';
    win = window.open(mypage, myname, winprops);
    if (parseInt(navigator.appVersion) >= 4) {
        win.window.focus();
    }
    return;
}

function kmGetElementLeft(e) {
    var nLeftPos = e.offsetLeft;
    var eParElement = e.offsetParent;
    while (eParElement !== null) {
        nLeftPos += eParElement.offsetLeft;
        eParElement = eParElement.offsetParent;
    }
    return nLeftPos;
}
function kmGetElementTop(e) {
    var nTopPos = e.offsetTop;
    var eParElement = e.offsetParent;
    while (eParElement !== null) {
        nTopPos += eParElement.offsetTop;
        eParElement = eParElement.offsetParent;
    }
    return nTopPos;

}
function kmFormatDecimal(expr, decplaces) {
    var re = new RegExp(',');
    var sformat = expr.replace(re, '.');
    var str = "" + Math.round(eval(sformat) * Math.pow(10, decplaces));
    while (str.length <= decplaces) {
        str = "0" + str;
    }
    var decpoint = str.length - decplaces;
    return str.substring(0, decpoint) + "." + str.substring(decpoint, str.length);
}
function kmGPS(obj) {
    kmCache.cId = obj.id;
    kmCache.cName = obj.name;
    try {
        if (typeof obj.value == "undefined") {
            kmCache.cValue = obj.innerHTML;
        }
        else {
            kmCache.cValue = obj.value;
        }
    }
    catch (e) {
        kmCache.cValue = obj.innerHTML;
    }
    kmCache.cTabIndex = obj.tabIndex;
    kmCache.cClass = document.getElementById("" + obj.id + "").className;
    kmCache.cX = kmGetElementLeft(obj);
    kmCache.cY = kmGetElementTop(obj);
    return;
}
function kmGetW() {
    var w;
    if (document.innerWidth) {
        w = document.innerWidth;
    }
    else if (document.documentElement.clientWidth) {
        w = document.documentElement.clientWidth;
    }
    else if (document.body) {
        w = document.body.clientWidth;
    }
    return w;
}
function kmGetH() {
    var h;
    if (document.innerHeight) {
        h = document.innerHeight;
    }
    else if (document.documentElement.clientHeight) {
        h = document.documentElement.clientHeight;
    }
    else if (document.body) {
        h = document.body.clientHeight;
    }
    return h;

}
function kmLeft(str, n) {
    if (n <= 0)
        return "";
    else if (n > String(str).length)
        return str;
    else
        return String(str).substring(0, n);
}
function kmObject(a, b, c, d, e, f, g, h, i, j, k, l) {
    this.cClass = a || "";
    this.cId = b || "";
    this.cName = c || "";
    this.cRecCount = d || 0;
    this.cState = e || -1;
    this.cTabIndex = f || "0";
    this.cValue = g || "";
    this.cX = g || 0;
    this.cxXml = h || "";
    this.cY = i || 0;
    this.XmlData = k;
    this.cKey = l;
    //this.trace = kmTrace(l)
    return this;

}
function kmPopPic(picURL, picWidth, picHeight, capt, msg) {
    var newWindow;
    newWindow = window.open(picURL, 'newWin', 'toolbar=no,width=' + picWidth + ',height=' + picHeight + ',scrollbars=yes,resizable=yes')
    newWindow.document.write('<head><title>' + capt + '<\/title><\/head>');
    newWindow.document.write('<body style="overflow:auto;margin:0px;" bgcolor="#000000">');
    newWindow.document.write('<center><img src="' + picURL + '" border="0" alt="' + capt + '"><\/center>');
    newWindow.document.write('<p align="center"><font color="#E7BA83" face="Verdana" size="3"><b>' + capt + '<\/b><\/font><\/p>');
    newWindow.document.write('<center><font face="Verdana" size="2"><a href="javascript:window.close();"><font color="#C0C0C0">' + msg + '<\/font><\/a><\/font><p>&nbsp;<\/p><\/center>');
    newWindow.document.write('<\/body><\/html>');
    newWindow.resizeBy(picWidth - newWindow.document.body.clientWidth, picHeight - newWindow.document.body.clientHeight)
    newWindow.focus()
}
function kmQuickEditPosition(obj) {
    document.getElementById("kmFckX").value = kmGetElementLeft(document.getElementById("kmCText"));
    document.getElementById("kmFckY").value = kmGetElementTop(document.getElementById("kmCText")) - 14;
    return;

}
function kmRight(str, n) {
    if (n <= 0) {
        return "";
    }
    else {
        if (n > String(str).length) {
            return str;
        }
        else {
            var iLen = String(str).length;
            return String(str).substring(iLen, iLen - n);
        }
    }
}
function kmShowHide(src, layer_ref) {
    if (kmState == 'block') {
        kmState = 'none';
        document.getElementById("" + src.id + "").src = "_assets/images/icon_plus.gif";
    } else {
        kmState = 'block';
        document.getElementById("" + src.id + "").src = "_assets/images/icon_minus.gif";
    }
    if (document.all) { //IS IE 4 or 5 (or 6 beta) 
        eval("document.all." + layer_ref + ".style.display = kmState");
    }
    if (document.layers) { //IS NETSCAPE 4 or below 
        document.layers[layer_ref].display = kmState;
    }
    if (document.getElementById && !document.all) {
        hza = document.getElementById(layer_ref);
        hza.style.display = kmState;
    }
}
function kmStripUnicode(s) {
    o = "";
    for (m = 0; s.charAt(m); ++m) {
        if ((c = s.charCodeAt(m)) < 128 && c != 38) {
            o += s.charAt(m);
        }
        else if (c == 38) {
            o += "&";
        }
        else {
            o += "&#" + c + ";";
        }
    }
    return o;
}

function kmStripHTML(s) {
    var matchTag = /<(?:.|\s)*?>/g;
    return s.replace(matchTag, "");
}
//var generator=window.open('','name','height=400,width=500');
//generator.document.write(KiimAjaxMessage(obj,obj.options[kmSelectKey].value));
//generator.document.close();

/* CMS Layout */
function kmResetCTextMargin() {
    try {
        //document.getElementById("kmCText").style.marginRight = "380px";
    }
    catch (e) { }

    return;
}
function kmResetMainMargin() {
    try {
        document.getElementById("kmSidebar").style.width = "0px";
        document.getElementById("kmSecondary").style.width = "0px";
        document.getElementById("kmMain").style.marginLeft = "0px";
        document.getElementById("kmMain").style.marginRight = "0px";
    }
    catch (e) { }
    return;
}
function kmResetSidebarMargin() {
    try {
        document.getElementById("kmSidebar").style.width = "0px";
        document.getElementById("kmMain").style.marginLeft = "0px";
    }
    catch (e) { }
    return;
}
function kmResetSecondaryMargin() {
    try {
        document.getElementById("kmSecondary").style.width = "0px";
        document.getElementById("kmMain").style.marginRight = "0px";
    }
    catch (e) { }
    return;
}

window.size = function() {
    var w = 0;
    var h = 0;

    //IE
    if (!window.innerWidth) {
        //strict mode
        if (!(document.documentElement.clientWidth == 0)) {
            w = document.documentElement.clientWidth;
            h = document.documentElement.clientHeight;
        }
        //quirks mode
        else {
            w = document.body.clientWidth;
            h = document.body.clientHeight;
        }
    }
    //w3c
    else {
        w = window.innerWidth;
        h = window.innerHeight;
    }
    return { width: w, height: h };
}

window.center = function() {
    var hWnd = (arguments[0] != null) ? arguments[0] : { width: 0, height: 0 };

    var _x = 0;
    var _y = 0;
    var offsetX = 0;
    var offsetY = 0;

    //IE
    if (!window.pageYOffset) {
        //strict mode
        if (!(document.documentElement.scrollTop == 0)) {
            offsetY = document.documentElement.scrollTop;
            offsetX = document.documentElement.scrollLeft;
        }
        //quirks mode
        else {
            offsetY = document.body.scrollTop;
            offsetX = document.body.scrollLeft;
        }
    }
    //w3c
    else {
        offsetX = window.pageXOffset;
        offsetY = window.pageYOffset;
    }

    _x = ((this.size().width - hWnd.width) / 2) + offsetX;
    _y = ((this.size().height - hWnd.height) / 2) + offsetY;

    return { x: _x, y: _y };
}