(PremiumTextAds = function(conf){

  function init() {
    conf          =  conf         ||  {};
    conf.name     =  conf.name    ||  'PremiumTextAd';
    //conf.JSONsrc  =  conf.JSONsrc ||  'lib/jsonoutput.js';
    conf.JSONsrc  =  conf.JSONsrc ||  "http://classifieds.neighborsink.com/premiumads/" + conf.siteid + ".js";
    loadJSON(conf.JSONsrc);
  }

  function loadJSON(url) {
    var h = document.getElementsByTagName("head")[0];
    var json = document.createElement('script');
        json.type = 'text/javascript';
        json.src = url;
    h.appendChild(json);
  }

  function dispatch(jsonObject) {
  
    var totalAds = 0;
    var pta = jsonObject["premiumTextAds"];
    var skin = jsonObject["skin"];
    var output = document.getElementById(conf.name + 'target');
    
    if(output && pta.length > 0) {
      
      skinMe(skin);
      
      var wrap = document.createElement('div');
      wrap.id = conf.name + 'box';
      
      if(skin.headerText || skin.headerGraphic) {
        var h3 = document.createElement('h3');
        if(skin.headerGraphic) {
          var h3img = document.createElement('img');
          h3img.src = skin.headerGraphic;
          h3.appendChild(h3img);
        }else{
          var check = document.createElement('img');
          check.src = "http://classifieds.neighborsink.com/images/check_sm.gif";
          var h3text = document.createTextNode(skin.headerText);
          h3.appendChild(check);
          h3.appendChild(h3text);
        }
        wrap.appendChild(h3);      
      }
  
      for(i=0;i<pta.length;i++) {
        var premium = pta[i];
        if(premium["ads"].length > 0) {
          
          cat = premium["title"];
          ads = premium["ads"];
          limit = premium["limit"];
          
          var wrap2 = document.createElement('div');
          wrap2.setAttribute('class',conf.name + 's');
          wrap2.setAttribute('className',conf.name + 's');
          wrap.appendChild(wrap2);
          
          var h4 = document.createElement('h4');
          var h4a = document.createElement('a');
          h4a.href = premium.url
          if(premium.graphic) {
            h4i = document.createElement('img');
            h4i.src = premium.graphic;
            h4a.appendChild(h4i);
          }else{
            var h4text = document.createTextNode(cat);
            h4a.appendChild(h4text);
          }
          
          h4.appendChild(h4a);
          wrap.appendChild(h4);
          
          ads.sort(randOrd);
          
          for(j=0;j<(skin.numberToDisplay <= ads.length ? skin.numberToDisplay : ads.length);j++) {
            var item = document.createElement('div');
            item.setAttribute('class',conf.name);
            item.setAttribute('className',conf.name);
            var text = ads[j].text.replace("\n", "<br/>");
  
            text = text.replace(/&lt;/g, "<");
            text = text.replace(/&gt;/g, ">");
            
            item.url = ads[j].url;
            item.onclick = getURL;
            item.onmouseover = ieMouseOver;
            item.onmouseout = ieMouseOut;
  
            item.innerHTML = text + '&nbsp;<em>' + skin["moreText"] + '</em>';
      
            wrap2.appendChild(item);
            wrap.appendChild(wrap2);
            totalAds++;
          }
        }
      }
      if(totalAds > 0) {
        if(skin.destructive) {
          output.innerHTML = "";
        }
        output.appendChild(wrap);
      }else{
        return false;
      }
    }
  }

  function randOrd(){
    return (Math.round(Math.random())-0.5);
  } 

  function ieMouseOver() {this.className += ' ' + conf.name + 'hover';}
  function ieMouseOut() {this.className = this.className.replace(' ' + conf.name + 'hover','')}
  function getURL() {window.location = this.url}
  
  function skinMe(skin) {
  
      skin = skin || {};
      skin.backgroundColor = skin.backgroundColor || "f4f4f4"
		  skin.primaryColor = skin.primaryColor || "003366";
		  skin.secondaryColor = skin.secondaryColor || "ffffcc";
		  skin.tertiaryColor = skin.tertiaryColor || "dddddd";
		  skin.moreText = skin.moreText || "&nbsp;&hellip;more";
		  skin.showWrapper = skin.showWrapper || false;

		var h = document.getElementsByTagName("head")[0];
    var s = document.createElement('style');
        s.type = 'text/css';
        var styles = "#" + conf.name + "box {margin:10px auto 0 auto;text-align:center;font-family:Verdana, Helvetica, sans-serif;position:relative;} " +
        "." + conf.name + " {background-color:#" + skin.backgroundColor + ";overflow:hidden;padding:10px;margin:0 10px;text-align:left;padding-bottom:12px;position:relative;font-size:10px;} " +
        "." + conf.name + ":hover {background-image:none;background-color:#" + conf.secondaryColor + ";border-color:#333;} " +
        "." + conf.name + " strong {display:block;} " +
        "." + conf.name + " p {margin:2px 0;font-size:10px;} " +
        "." + conf.name + " a:link,." + conf.name + " a:visited {color:#003366;font-style:italic;font-weight:bold;text-decoration:none;} " +
        "#" + conf.name + "box {position: relative;margin:10px auto;padding:5px 0} " +
        "#" + conf.name + "box h3 {margin: 0;padding: 0;font-size:16px;}" +
        "#" + conf.name + "box h3 img {margin-left: -16px;}" +
        "#" + conf.name + "box h4 {margin: 10px 10px 0 10px;padding: 0 0 0 10px;font-size:12px;text-align:left;background-image:url(http://static.cnhi.zope.net/images/featuredads/featuredback.jpg);}" +
        "#" + conf.name + "box h4 a img {border:none;}" +
        "#" + conf.name + "box h4 a {color:#" + skin.primaryColor + ";text-decoration:none;display:block}" +
        "." + conf.name + " {cursor: pointer;} " +
        "." + conf.name + "hover{background-image: none;background-color:#" + skin.secondaryColor + ";border-color: #333;}" +
        "." + conf.name + " em {font-weight: bold;color: #" + skin.primaryColor +";}";
        if(skin.boldFirstLine) {
          styles += ("." + conf.name + ":first-line {font-weight: bold} ");
        }
        if(skin.showWrapper) {
          styles += ("#" + conf.name + "box {background-color: #" + skin.tertiaryColor + ";margin:10px;border:2px solid #999} ");
        }
        if (s.styleSheet) {
          s.styleSheet.cssText = styles;
        } else {
          s.appendChild(document.createTextNode(styles));
        }
    h.appendChild(s);
  }
  
  
  return {
    init:init,
    dispatch:dispatch
  }
})();
function processJSON(pta){
  textAds.dispatch(pta)
}
