/**
*
*  AJAX IFRAME METHOD (AIM)
*  http://www.webtoolkit.info/
*
**/

var AIM = {

    frame : function(f,c) {

        var n = 'f' + Math.floor(Math.random() * 99999);
        var d = document.createElement('DIV');
        d.innerHTML = '<iframe style="display:none;" src="about:blank" id="'+n+'"  name="'+n+'" onload="AIM.loaded(\''+n+'\',\''+f.id+'\')"></iframe>';

        document.body.appendChild(d);

        var i = document.getElementById(n);


         if (c && typeof(c.onComplete) == 'function') {
            i.onComplete = c.onComplete;
        }

        return n;
    },

    form : function(f, name) {
        f.setAttribute('target', name);
    },

    submit : function(f,c) {

        AIM.form(f, AIM.frame(f,c));
        if (c && typeof(c.onStart) == 'function') {
            if (c.onStart(f)) {               f.submit();
            }
        } else {
               f.submit();
        }
        setFormStatus(f,false);

    },

    loaded : function(id,formname) {
       var i = document.getElementById(id);
        if (i.contentDocument) {
            var d = i.contentDocument;
        } else if (i.contentWindow) {
            var d = i.contentWindow.document;
        } else {
            var d = window.frames[id].document;
        }
        if (d.location.href == "about:blank") {
            return;
        }


        if (typeof(i.onComplete) == 'function') {
            i.onComplete(d.body.innerHTML,formname);
        }
    }

}


function startCallback(form__) {

     return true;
}

function completeCallback(response,formname) {    var  index1 = response.indexOf("{");
    if (index1 > 0) {
        response = response.substr(index1);    }
    index1 = response.lastIndexOf("}");
    if (index1 > 0) {
        response = response.substr(0,index1+1);
    }
   // response=response.replace(re, "");
  // alert(response);
    var resp_obj = response.toString().parseJSON('');
    if (resp_obj.error  != undefined) {    	alert(resp_obj.error);    } else {

       if (resp_obj.action == 'pattern') {
         	document.mainform.ev_details.value   =  decode64(resp_obj.pt_details);
			document.mainform.ev_name.value      =  decode64(resp_obj.pt_name);
         	document.mainform.ev_caid.value      =  resp_obj.pt_caid;
			document.mainform.ev_currency.value  =  resp_obj.pt_currency;
         	document.mainform.ev_type.value      =  resp_obj.pt_type;
			document.mainform.ev_impact.value    =  (resp_obj.et_impact);
			document.mainform.action             =  old_action;
         	document.mainform.ev_actual.value    =  resp_obj.pt_actual;
         	document.mainform.ev_forecast.value  =  resp_obj.pt_forecast;
         	document.mainform.ev_previous.value  =  resp_obj.pt_previous;
         	document.mainform.ev_public.checked  =  (resp_obj.pt_public)?true:false;

            var dt = new Date();

            if (parseInt(resp_obj.dates) >= dt.getDate()) {
                resp_obj.months = dt.getMonth()+1;            } else {                resp_obj.months = dt.getMonth()+2;
            }

            if (parseInt(resp_obj.months) < 10) {
               resp_obj.months = "0"+resp_obj.months;
            }

            if (parseInt(resp_obj.months) > 12) {            	resp_obj.months = "01";
            	resp_obj.years  = parseInt(resp_obj.years) +1;
            }

         	document.mainform.ev_months.value    =  resp_obj.months;
         	document.mainform.ev_dates.value     =  resp_obj.dates;
         	document.mainform.ev_years.value     =  resp_obj.years;

         	document.mainform.ev_hours.value     =  resp_obj.hours;
         	document.mainform.ev_minutes.value   =  resp_obj.minutes;
         	document.mainform.ev_seconds.value   =  resp_obj.seconds;

			document.mainform.setAttribute('target', "");
       }


       if (resp_obj.action == 'pattern_typeinfo') {
         	document.mainform.pt_details.value   = decode64(resp_obj.et_details);
			document.mainform.pt_name.value      = decode64(resp_obj.et_name);
			document.mainform.pt_impact.value    = (resp_obj.et_impact);
			document.mainform.action             = old_action;
			document.mainform.setAttribute('target', "");
       }

          if (resp_obj.action == 'typeinfo') {
         	document.mainform.ev_details.value   = decode64(resp_obj.et_details);
			document.mainform.ev_name.value      = decode64(resp_obj.et_name);
			document.mainform.ev_impact.value    = (resp_obj.et_impact);
			document.mainform.action             = old_action;
			document.mainform.setAttribute('target', "");
       }



    }

    setFormStatus(document.getElementById(formname),true);

}

function setFormStatus(frm,status) {   if (frm == undefined  || frm.elements == undefined) return;
   var len = frm.elements.length;
   for(var i=0 ; i<len ; i++) {
               frm.elements[i].disabled=!status;
   }
   frm.disabled = !status;
}

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);

   return output;
}

function decode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}

var c = {'onStart' : startCallback , 'onComplete' : completeCallback};

