// Copyright (C) 2009 Node7, Kristoffer Tjaernaas. All rights reserved.

var draft; 

var NV_PATH = "http://npc.peacebuilding.no/public/widget/npc/"; 
var NV_PROXY = "http://npc.peacebuilding.no/proxy.html"; 
var NV_TRUSTED = "npc.peacebuilding.no";

function Widget(opts) {
  this.init = function(opts) {
    this.opts = opts;
    this.interval = opts.interval;
    this.klass = opts.klass;
  }

  this.create = function(box) {
    var ele = box.element;
    var this_helper = this;
    
    ele.html(draft);
    
    this.setTitle(box);
    
    $('.close a.close_link', ele).click(function() {
        
        var delblockURL = "/ezcore/n7/del/"+portal_id+"/"+box.options.zone+"/"+box.options.block_id+"/"+box.options.block;
        
        $.get(delblockURL, function(data){
         
            if(data == '1') {
                box.remove();
            }
            
        });
      
      return false;
    });
    
    
    
    
    
    
  }

  this.load = function(box) {
    var content = this.opts.load.call(this, box);
    if (content) {
      $(".box_content", box.element).html(content);
      box.loaded();
    }
  }

  this.setTitle = function(box, title) {
    if (title) {
      $.extend(box.options, {title: title});
    }
    $(".ttl4 span", box.element).html(box.options.title);
  }

  this.init(opts);
}

var TestWidget = new Widget({
  load: function(box) {
    return "This is the content of box " + box.id;
  }
});

function buildURL(box) {
  var base = NV_PATH;
  base += ('?uwaUrl=' + escape(box.options.url));
  base += ('&id=' + box.id);
  base += ('&ifproxyUrl=' + escape(NV_PROXY));
  if (box.options.preferences) {
    $.each(box.options.preferences, function(i, val) {
      base += ('&' + escape(i) + '=' + escape(val));
    });
  }
  return base;
}

var iFrameWidget = new Widget({
  load: function(box) {
    var url = buildURL(box);
    var frame = $('<iframe></iframe>');
    frame.attr('src', url);
    return frame;
  }
});

var msgHandler = function(message) {
  var id = message.id;
  var box = portlets.box(id);
  switch (message.action) {
    case 'resizeHeight':
      $('.box_content iframe', box.element).height(message.value);
      break;
    case 'setValue':
      var opts = {}
      opts[message.name] = message.value
      
      box.options.preferences = box.updateOptions({preferences:opts});
      break;
    case 'setTitle':
      box.widget.setTitle(box, message.value);
   default:
      break;
  }
};
 
UWA.MessageHandler = new UWA.iFrameMessaging;
UWA.MessageHandler.init({
    'eventHandler': msgHandler,
    'trustedOrigin' : NV_TRUSTED 
});

var ezWidget = new Widget({
    load: function(box) { load_widget(box); },
    
    interval: 300
});

function load_widget(box) {
            
            var getblockURL = "/ezcore/n7/getBlock/"+portal_id+"/"+box.options.zone+"/"+box.options.block;
            
            
            
            $.getJSON(getblockURL, {}, 
                function(json, textStatus)
                {
                    
                    var opt_obj = {};
                    
                    
                    
                    if(json.content){
                        $(".box_content", box.element).html(json.content);
                    }
                    if(json.settings){
                        opt_obj.settings = JSON.parse(htmlspecialchars_decode(json.settings, 'ENT_QUOTES'));
                    }
                    
                    $.extend(box.options, opt_obj);
                    
                    if(box.options.settings) {
                        if(box.options.settings.title) {
                            box.widget.setTitle(box, box.options.settings.title);
                        }
                    }
                    
                    if(is_logged_in==true) {
                        $(".box_content", box.element).prepend('<a class="editLink" href="#">Edit</a><form action="#" method="get" class="opts_form" style="display:none;"></form>');
                    
                        
                        
                        
                        $.each(box.options.settings, function(item, v){
                            
                            $("form.opts_form", box.element).prepend("<span><label>"+item+"</label><input type='text' size='20' name='txt[]'  value='"+v+"' pref_id='"+item+"' /></span>");
                        });
                        
                        $("form.opts_form", box.element).append("<input type='submit' value='Save' />").find("input[type=submit]:last").click(function(e) {
                            e.preventDefault();
                            
                            var  user_pref = {};
                            $(this).parent('.opts_form').find('input:text').each(function(){
                                
                                user_pref[$(this).attr('pref_id')] = $(this).val();
                            });
                            
                            box.update({"preferences":user_pref});

                            return false;
                        });
                        
                    } 
                    
                }
            );
            box.loaded();
            
}