var PSB = function(){
   var REQUEST_ON_PROGRESS = false;
   var timerLoading;

   function prefetchImage(src){
      var img = new Image();
      img.src = src;
   }

   function showLoading(){
      var wait = 150;
      timerLoading = setTimeout(function(){
         $('#skn-loading-layer').show();
         $('#skn-loading').show();
      }, wait);
   }

   function hideLoading(){
      var wait = 400;
      clearTimeout(timerLoading);
      setTimeout(function(){
         $('#skn-loading-layer').hide();
         $('#skn-loading').hide();
      }, wait);
   }

   // block unsupported browser
   if (jQuery.browser.msie && parseFloat(jQuery.browser.version)<7) {
      var forceIE6 = (typeof isIE6 != 'undefined');
      if (!forceIE6) {
         if (/search/.test(window.location))
            window.location = window.location.href + '&ie6=1';
         else
            window.location = 'content.php?error=browser';
      }

   }

   return {
      request: function(url, target, data, callback){
         if (REQUEST_ON_PROGRESS) return;
         else REQUEST_ON_PROGRESS = true;
         showLoading();

         data = data || {};
         callback = callback || {};

         jQuery.ajax({
            type: 'GET',
            url: url,
            data: jQuery.extend({ ajax: 1 }, data),
            success: function(response){
               //$(target).html(response);
               $(target).replaceWith(response);
               callback.success && callback.success(response);
            },
            error: function(){
               callback.error && callback.error();
            },
            complete: function(t){
               callback.complete && callback.complete();
               hideLoading();
               REQUEST_ON_PROGRESS = false;
            }
         });
      },

      // use with care
      ROPHack: function(){
         REQUEST_ON_PROGRESS = false;
      },

      validate: function(element, type){
         type = type.toLowerCase();
         if (type == 'num') {
            var val = element.value.replace(/[^\d]+/, '');
            if (element.value != val)
               element.value = val;
         }
      },

      validateSearch: function(sourceId, infoId){
         var element = $(sourceId);
         if (element.val().length < 11) {
            var infoEl = $(infoId);
            infoEl.html('Cari Hasil Seleksi dengan nomor pendaftaran anda<br /><br /><span style="color:#FF0000">Nomor pendaftaran harus 11 digit</span>');
            return false;
         }
      },

      printMe: function(){
         $('#printarea .frame-cont').html( $('#wrapper .frame-cont').html() );
         $('#printarea tr:hidden').show();
         $('#printarea .banner-adv').hide();
         $('#printarea td.skn-search').hide();
         if (!(/(seleksi\.php|daftar\.php|statistik\.php|ajuan\.php|search)/.test(window.location))) {
            $("#printarea a[href]").each(function (i) {
               var withHttp = !!/http:\/\//.test( $(this).attr('href') );
               var baseUrl  = String(window.location.href).replace(/(http:\/\/[a-z\-\.]+\/).+/, '$1');
               $(this).replaceWith( $(this).text()+' <code>'+(withHttp?'':baseUrl)+$(this).attr('href')+'</code>' );
            });
         }else{
            $('#printarea .frame-cont').html( $('#wrapper .frame-cont #ajaxTarget').html() );
         }
         $('#printarea .skn-foot').html( $('#wrapper .skn-foot').html() );
         window.print();
      }
   }
};

psb = new PSB;
