//Operation Types
var IS_OTYPE  = 1;
var ALL_OTYPE = 2;
var ANY_OTYPE = 4;
var NONE_OTYPE  = 8;
var ISNOT_OTYPE = 16;
var GRATR_OTYPE = 32;
var LESSR_OTYPE = 64;
var START_OTYPE = 128;
var ENDNG_OTYPE = 256;
var CONTN_OTYPE = 512;

//Data Types:
var NUM_DTYPE  = {id:0,ot:1+16+32+64};
var TXT_DTYPE  = {id:1,ot:128+256+512+1+16};
var TAG_DTYPE  = {id:2,ot:2+4+8};
var DATE_DTYPE = {id:3,ot:1+16+32+64};

//Category Types
var PTAGS_CTYPE      = 0;
var TAGS_CTYPE       = 1;
var DATEUPLOADED_CTYPE = 2;
var EXIF_CTYPE       = 3;
var OWNER_CTYPE      = 4;
var RATING_CTYPE     = 5;
var VIEWS_CTYPE      = 6;
var GEOTAGS_CTYPE    = 7;
var DATETAKEN_CTYPE    = 8;


var CTYPE_INDEX = {'0':TAG_DTYPE,
           '1':TAG_DTYPE,
           '2':DATE_DTYPE,
           '3':TXT_DTYPE,
           '4':TAG_DTYPE,
           '5':NUM_DTYPE,
           '6':NUM_DTYPE}

//Smartset datatype:

//dict(id=<id>,
//     title=<title>,
//     description=<title>,
//     rules=<ARRAY OF RULES>,
//     ownerid=<ownerid>,
//     datecreated=<UNIXTIMESTAMP>,
//     dateupdated=<UNIXTIMESTAMP>)

//Rule datatype

//dict(catid=<CATID>,
//     data=<DATA>,
//     operation=<OPERATION>)

_ZSSCACHE = {};

_ZSSTEMPCACHE = null;

_ZSSHANDEDRIDI = -1;

smartsets = {

  startBuilder : function(inElement) {
    //Create new temp smartset
    if (_ZSSTEMPCACHE == null) {
      _ZSSTEMPCACHE = {id:-1,
               title:'',
               description:'',
               rules:{},
               context:1,
               sortmode:2,
               primary_photo_id:-1,
               primary_secret:''};
    }

    var contents = ''; //Where we're going to put all of this stuff

    contents += '<h3><a href="' + photos_url + 'sets/" class="smalllink_ltgrey">&laquo; ' + gettext("Go back to your SmartSets?") + '</a></h3><div><input type="button" class="sm_button" value="' + gettext("ADD") + '▼" onclick="zmenu.trigger($(\'smartsets_addzmenu\'),this.offsetLeft,this.offsetTop)" /> <strong>' + gettext("Match all of the following criteria:") + '</strong></div>';

    contents += '<div id="smartsets_addzmenu" class="zmenu">';
//    contents += '<a id="sszmenu_cat3" href="javascript:void(0);" onclick="">EXIF</a>';
    contents += '<a id="sszmenu_cat1" href="javascript:void(0);" onclick="ss_snapins.build(1);"><img border="0" src="/images/silk/tag_blue.png"/> ' + gettext("Labels") + '</a>';
    contents += '<a id="sszmenu_cat6" href="javascript:void(0);" onclick="ss_snapins.build(6);"><img border="0" src="/images/silk/eye.png"/> ' + gettext("Views") + '</a>';
//    contents += '<a id="sszmenu_cat5" href="javascript:void(0);" onclick=""><img border="0" src="/images/tidbits/zstar_sm.gif"/>Rating</a>';
    contents += '<a id="sszmenu_cat7" href="javascript:void(0);" onclick="ss_snapins.build(7);"><img border="0" src="/images/silk/world.png"/> ' + gettext("GeoTags") + '</a>';
//    contents += '<a id="sszmenu_cat4" href="javascript:void(0);" onclick="ss_snapins.build(4);"><img border="0" src="/images/silk/user.png"/> Owner</a>';
    contents += '<a id="sszmenu_cat0" href="javascript:void(0);" onclick="ss_snapins.build(0);"><img border="0" src="/images/silk/user.png"/> ' + gettext("PeopleTags") + '</a>';
    contents += '<a id="sszmenu_cat8" href="javascript:void(0);" onclick="ss_snapins.build(8);"><img border="0" src="/images/silk/calendar.png"/> ' + gettext("Date Taken") + '</a>';
    contents += '<a id="sszmenu_cat2" href="javascript:void(0);" onclick="ss_snapins.build(2);"><img border="0" src="/images/silk/calendar.png"/> ' + gettext("Date Uploaded") + '</a>';
    contents += '</div>';

    contents += '<div id="smartset_rule_area"><h1 id="zsstobegin" style="text-align:center;padding:5px;">' + gettext("To begin, please select a category from the ADD menu") + '</h1></div>';

    contents += '<div id="sscontextdiv" style="display:none;"><h2 style="margin:0;">' + gettext("Match photos from:") + '</h2>';
    contents += '<form><input type="radio" id="ss_context" name="ss_context" value="1"' + ( _ZSSTEMPCACHE['context'] == 1 ? 'checked="true"' : '') + '><label for="ss_context"> <img src="' + global_icon_url + '" style="vertical-align:bottom;" alt="" width="16" height="16" /> ' + gettext("Your Photos") + '</label><br />';
    contents += '<input type="radio" name="ss_context" value="2"' + ( _ZSSTEMPCACHE['context'] == 2 ? 'checked="true"' : '') + '><label for="ss_context"> <img src="/images/silk/group.png" style="vertical-align:bottom;" alt="" /> ' + gettext("Your Social Circle") + '</label><br />';
    contents += '<input type="radio" name="ss_context" value="3"' + ( _ZSSTEMPCACHE['context'] == 3 ? 'checked="true"' : '') + '><label for="ss_context"> <img src="' + global_icon_url + '" style="vertical-align:bottom;" alt="" width="16" height="16" /><strong style="font-size:16px;"> + </strong><img src="/images/silk/group.png" style="vertical-align:bottom;" alt="" /> ' + gettext("You and Your Social Circle") + '</label><br />';
    contents += '<input type="radio" name="ss_context" value="4"' + ( _ZSSTEMPCACHE['context'] == 4 ? 'checked="true"' : '') + '><label for="ss_context"> <img src="/images/silk/world.png" style="vertical-align:bottom;" alt="" /> ' + gettext("Everyone") + '</label></form></div>';

    contents += '<br /><div id="sssortmodediv" style="display:none;"><h2 style="margin:0;">' + gettext("Sorted by:") + '</h2>';
    contents += '<form><input type="radio" id="ss_sortmode" name="ss_sortmode" value="2"' + ( _ZSSTEMPCACHE['sortmode'] == 2 ? 'checked="true"' : '') + '><label for="ss_sortmode"> <img src="/images/silk/award_star_gold_3.png" style="vertical-align:bottom;" alt="" width="16" height="16" /> ' + gettext("Awesomeness") + '</label><br />';
    contents += '<input type="radio" name="ss_sortmode" value="1"' + ( _ZSSTEMPCACHE['sortmode'] == 1 ? 'checked="true"' : '') + '><label for="ss_sortmode"> <img src="/images/silk/time.png" style="vertical-align:bottom;" alt="" /> ' + gettext("Most Recent") + '</label></form></div>';

    contents += '<br /><div id="sstitlediv" style="display:none;"><h2 style="margin:0;">' + gettext("SmartSet Title") + '</h2>';
    contents += '<input type="text" id="smartset_title" name="smartset_title" value="'+_ZSSTEMPCACHE['title']+'" style="width:100%;font-weight:bold;font-size:20px;" /></div>';

    contents += '<br /><div id="ssdescdiv" style="display:'+(_ZSSTEMPCACHE['id'] == -1 ? 'none' : 'block' )+';"><h2 style="margin:0;">' + gettext("SmartSet Description") + '</h2>';
    contents += '<textarea id="smartset_description" name="smartset_description" rows="4" style="width:100%;">'+_ZSSTEMPCACHE['description']+'</textarea>';

    contents += '<br /><div id="ssphotodiv" style="display:none;"><h2 style="margin:0;">' + gettext("SmartSet Cover Photo") + ' <input type="button" class="sm_button" value="' + gettext("CHOOSE A PHOTO") + '▼" onclick="smartsets.BuildMBrowser($(\'photosheet\'));new Effect.BlindDown($(\'photosheet\'));" /></h2>';
    contents += '<img id="smartset_img" src="' + (_ZSSTEMPCACHE['primary_photo_id'] > -1 ? _photo_root + _ZSSTEMPCACHE['primary_photo_id'] + '_' + _ZSSTEMPCACHE['primary_secret'] + '_m.jpg' : '/images/tidbits/no_photo_selected.gif') + '" alt="" /></div>';

    contents += '<h3 style="text-align:right;">' + gettext("All Finished?") + ' &raquo; <input type="button" class="reg_button" value="' + gettext("Save").toUpperCase() + '" onclick="smartsets.saveSmartSet()" /></h3></div>';

    inElement.innerHTML = contents;


    Event.observe('smartset_title', 'keyup', function(oEvent){ if ($('ssdescdiv').style.display == 'none') {Effect.Appear($('ssdescdiv'))}else if ($F('smartset_title').length == 0) { $('ssdescdiv').hide();} }, false);


    for (k in _ZSSTEMPCACHE['rules']) {
      _ZSSHANDEDRIDI++;
      ss_snapins.build(_ZSSTEMPCACHE['rules'][k]['catid'],k);
    }

  },

  updateoperators : function (ruleid) {
    //get ruleset's category:
    var rs_otype = CTYPE_INDEX[_ZSSTEMPCACHE['rules'][ruleid]['catid']]

    var rs_opselector = $('smartset_ruleset_operator' + ruleid);

    //Clear the box:
    rs_opselector.options.length = 0;

    var oper_options = [];

    if (rs_otype == NUM_DTYPE) {
      oper_options = [['equal to','1'],
              ['is not equal to','16'],
              ['is greater than','32'],
              ['is less than','64']];
    }else if (rs_otype == TXT_DTYPE) {
      oper_options = [['equals','1'],
              ['is not equal to','16'],
              ['starts with','128'],
              ['ends with','256'],
              ['contains','512']];
    }else if (rs_otype == TAG_DTYPE) {
      oper_options = [['match all of','2'],
              ['match any of','4'],
              ['matches none of','8']];
    }else if (rs_otype == DATE_DTYPE) {
      oper_options = [['is equal to','1'],
              ['is not not equal to','16'],
              ['is greater than','32'],
              ['is less than','64']];
    }

    //Populate operator select
    for(i=0;i<oper_options.length;i++) {
      rs_opselector.options[i] = new Option(oper_options[i][0],oper_options[i][1]);
      if (_ZSSTEMPCACHE['rules'][ruleid]['operation'] == oper_options[i][1]) {
        rs_opselector.options[i].selected = true;
      }
    }
  },

  saveSmartSet : function() {

    if (_ZSSTEMPCACHE['primary_photo_id'] == -1) {
      alert( gettext("Please select a photo from your library first!") );
      smartsets.BuildMBrowser($('photosheet'));new Effect.BlindDown($('photosheet'));
      return;
    }

    //Update cache from form
    _ZSSTEMPCACHE['title'] = $F('smartset_title');
    _ZSSTEMPCACHE['description'] = $F('smartset_description');
    _ZSSTEMPCACHE['parsedrules'] = '';
    _ZSSTEMPCACHE['context'] = $RF('ss_context');
    _ZSSTEMPCACHE['sortmode'] = $RF('ss_sortmode');

    for (k in _ZSSTEMPCACHE['rules']) {
      //Process any last-minute functions
      if (_ZSSTEMPCACHE['rules'][k]['process_func'] !== undefined) _ZSSTEMPCACHE['rules'][k]['process_func']();
      _ZSSTEMPCACHE['rules'][k] = {catid:_ZSSTEMPCACHE['rules'][k]['catid'],data:$F('smartset_ruleset_data'+k),operation:$F('smartset_ruleset_operator'+k)}
      _ZSSTEMPCACHE['parsedrules'] = _ZSSTEMPCACHE['parsedrules'] + '\n' + _ZSSTEMPCACHE['rules'][k]['catid'] + '|' + _ZSSTEMPCACHE['rules'][k]['data'] + '|' + _ZSSTEMPCACHE['rules'][k]['operation'];
    }

    $('smartset_builder').style.textAlign = 'center';
    $('smartset_builder').style.paddingTop = '50px';
    $('smartset_builder').innerHTML = '<img src="/images/tidbits/refresh.gif" border="0" /> ' + gettext("Saving...");

    var success = function(t){
      var response_data = json_parse(t.responseText)['photoset'];
      window.location = response_data['url'];
    }

    ZAPI.callMethodJSON( (_ZSSTEMPCACHE['id'] == -1 ? 'zooomr.photosets.create' : 'zooomr.photosets.edit'), {photoset_id: _ZSSTEMPCACHE['id'], title: _ZSSTEMPCACHE['title'], description: _ZSSTEMPCACHE['description'], primary_photo_id: _ZSSTEMPCACHE['primary_photo_id'], context: _ZSSTEMPCACHE['context'], sortmode: _ZSSTEMPCACHE['sortmode'], rules: _ZSSTEMPCACHE['parsedrules'] }, {'onSuccess':success} );
  },

  BuildMBrowser : function(container_element) { //photo_id,note
      container_element.innerHTML = '';
      container_element.style.height = ($('footer').offsetTop - container_element.offsetTop) + 'px';

      // create PixChooser
      var pixChooser = newNode("div");
          pixChooser.setAttribute('class','pixchooser');
          pixChooser.style.margin = 'auto';
          pixChooser.style.marginTop = '50px';
          pixChooser.style.width = '700px';
          pixChooser.style.height = '345px';


      var self = this;

      var cancelImg = newNode("img");
          cancelImg.src = "/images/tidbits/window_closer_black.gif";
          cancelImg.setAttribute('style','float:right;margin:4px;cursor:pointer;z-index:9000;');
          cancelImg.alt = gettext("Cancel");
          cancelImg.title = gettext("Cancel");
          cancelImg.border = '0';
          cancelImg.onclick = function() { new Effect.BlindUp(container_element); container_element.innerHTML = '';};

      pixChooser.appendChild(cancelImg);


      var streamChooserDiv = newNode("div");
          streamChooserDiv.setAttribute('class','innerPixchooser');
          streamChooserDiv.style.width = '230px';
          streamChooserDiv.style.height = '275px';
          streamChooserDiv.style.position = 'absolute';
          streamChooserDiv.style.padding = '10px';

      //The actual input
      var ainput = newNode("input");

    // <input style="color: #333; font-size: 10px; padding: 0" type="text" name="q" value="" size="30">

      ainput.style.color = '#000';
      ainput.style.fontSize = '13px';
      ainput.style.fontWeight = 'bold';
      ainput.style.width = '220px';

      ainput.style.padding = '2px';

      ainput.style.borderTop = '1px solid #000';
      ainput.style.borderLeft = '1px solid #000';
      ainput.style.borderRight = '1px solid #ccc';
      ainput.style.borderBottom = '1px solid #ccc';

      ainput.setAttribute('type','text');
      ainput.setAttribute('value',gettext("Refine by Tags"));

      streamChooserDiv.appendChild(ainput);


      var photosDiv = newNode("div");

      streamChooserDiv.appendChild(photosDiv);


      Event.observe(ainput, 'focus', function(){if (ainput.value == gettext("Refine by Tags")) {
                                                  ainput.value = '';
                                                }}, false);

      Event.observe(ainput, 'blur', function(){if (ainput.value == '') {ainput.value = gettext("Refine by Tags");}}, false);

      pixChooser.appendChild(streamChooserDiv);

      var streamSelectedDiv = newNode("div");
          streamSelectedDiv.setAttribute('class','innerPixchooser');
          streamSelectedDiv.innerHTML = '<h1 style="margin:0;">Destination Photo</h1>';
          streamSelectedDiv.style.width = '393px';
          streamSelectedDiv.style.height = '285px';
          streamSelectedDiv.style.marginLeft = '275px';
          streamSelectedDiv.style.padding = '5px 10px';

      var innerStreamSelectedDiv = newNode("div");
    //      innerStreamSelectedDiv.style.overflow = 'auto';

      streamSelectedDiv.appendChild(innerStreamSelectedDiv);

      pixChooser.appendChild(streamSelectedDiv);

      Event.observe(ainput, 'keyup', function(oEvent){smartsets.getdataForPixChooser(1,ainput,photosDiv,innerStreamSelectedDiv);}, false);

      smartsets.getdataForPixChooser(1,ainput,photosDiv,innerStreamSelectedDiv);

    //<input type="submit" onclick="contacts.savecontact('1148782764_5315','add','addcontactform')" class="reg_button" value="OK!"/>
    //<input type="submit" onclick="new Effect.BlindUp('addcontactform');" value="CANCEL"/>

      var buttonDiv = newNode("div");
          buttonDiv.style.width = '690px';
          buttonDiv.style.margin = '5px 0';
          buttonDiv.style.textAlign = 'right';

      var cancelInput = newNode("input");
          cancelInput.setAttribute('class','cancel_button');
          cancelInput.setAttribute('type','button');
          cancelInput.setAttribute('value',gettext("Cancel"));
          cancelInput.onclick = function() { new Effect.BlindUp(container_element); container_element.innerHTML = '';};

      buttonDiv.appendChild(cancelInput);

      buttonDiv.appendChild(document.createTextNode(' '));

      buttonDiv.appendChild(document.createTextNode(' '));

      greenInput = newNode("input");
      greenInput.setAttribute('class','reg_button');
      greenInput.setAttribute('type','button');
      greenInput.setAttribute('value','CONTINUE');
//      greenInput.setAttribute('disabled','true');

      greenInput.onclick = function () {
                                          if (_ZSSTEMPCACHE['primary_photo_id'] > -1) {
                                            new Effect.BlindUp(container_element);
                                            container_element.innerHTML = '';
                                            $('smartset_img').src = _photo_root + _ZSSTEMPCACHE['primary_photo_id'] + '_' + _ZSSTEMPCACHE['primary_secret'] + '_m.jpg';
                                          } else {
                                            alert( gettext("Please select a Destination Photo first.") );
                                          }

                                        }

      buttonDiv.appendChild(greenInput);

      pixChooser.appendChild(buttonDiv);

      container_element.appendChild(pixChooser);

  },

  getdataForPixChooser : function(page_num,ainput,photoContainer,streamSelectedDiv) {
        //Get Object Data:
        var success = function(t) {
          photoContainer.innerHTML = '';
          //Parse Data
          var this_page = json_parse(t.responseText)['photos'];
          //Load Page Nav

          var navDiv = newNode("div");
              navDiv.setAttribute('class','pcPageNav');

          if (this_page.pages == 0) {
            navDiv.appendChild(document.createTextNode( gettext("No photos were found.") ));
          } else {

            var prevNav = newNode("a");
                prevNav.href = "javascript:void(0);";
                prevNav.onclick = function() {if (page_num-1 > 0) { smartsets.getdataForPixChooser(page_num-1,ainput,photoContainer,streamSelectedDiv);} else { smartsets.getdataForPixChooser(this_page.pages,ainput,photoContainer,streamSelectedDiv); }}
                prevNav.innerHTML = '&laquo;';

            navDiv.appendChild(prevNav);

            var placeNav = newNode("span");
                placeNav.innerHTML = this_page.page+'/'+this_page.pages+' ('+this_page.total+')';

            navDiv.appendChild(placeNav);


            var nextNav = newNode("a");
                nextNav.href = "javascript:void(0);";
                nextNav.onclick = function() {if (this_page.pages-this_page.page > 0) {smartsets.getdataForPixChooser(page_num+1,ainput,photoContainer,streamSelectedDiv);} else { smartsets.getdataForPixChooser(1,ainput,photoContainer,streamSelectedDiv); }}
                nextNav.innerHTML = '&raquo;';

            navDiv.appendChild(nextNav);

          }

          photoContainer.appendChild(navDiv);

          for (k=0;k<this_page['photo'].length;k++) {
            photoContainer.appendChild(smartsets.drawimgForPixChooser(this_page['photo'][k],'highlight',ainput,photoContainer,streamSelectedDiv));
          }

          zloader.disable();

        }

        var tag_data = ainput.value;
        if (tag_data == gettext("Refine by Tags")) {
          tag_data = '';
        }

//X          var url = '/objnfo.awe';
//X          var pars = 'data='+JSON.stringify({"action":"ps","limit_list":[],"uid":global_nsid,"tags":tag_data,"page":page_num,"perpage":16});
//X        // alert(pars);
//X          new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:success});


        ZAPI.callMethodJSON( 'zooomr.photos.search', {query: tag_data + " query:owner=" + global_nsid, per_page: 16, page: page_num}, {onSuccess:success})
        zloader.enable();

    },

    drawimgForPixChooser : function(photo_data,h_mode,ainput,photoContainer,streamSelectedDiv) {
      var testImg = newNode("img");
          testImg.setAttribute('class',h_mode);
          testImg.src = _photo_root + photo_data.id + '_' + photo_data.secret + '_s.jpg'; //photo_data.src;
          testImg.style.padding = '2px';
          testImg.style.margin = '1px';
          testImg.style.height = '50px';
          testImg.style.width = '50px';
          testImg.onclick = function() {_ZSSTEMPCACHE['primary_photo_id'] = photo_data.id;
                                        _ZSSTEMPCACHE['primary_secret'] = photo_data.secret;
                                        streamSelectedDiv.innerHTML = '';
                                        var newPortalThumbnail = document.createElement('img');
                                            newPortalThumbnail.border = 0;
                                            newPortalThumbnail.src = _photo_root + photo_data.id + '_' + photo_data.secret + '_m.jpg';
                                        streamSelectedDiv.appendChild(newPortalThumbnail);
                                        };

      return testImg

    }


}


_ZSSTOBEGIN = true;

ss_snapins = {

  build : function(catid,ruleid) {

    zloader.enable();

    if (ruleid === undefined) {
      _ZSSHANDEDRIDI++;
      var ruleid = _ZSSHANDEDRIDI;
      _ZSSTEMPCACHE['rules'][String(ruleid)] = {catid:catid,data:'',operation:'0'};
    }

    var rs_div = document.createElement("div");
    rs_div.setAttribute('id','smartset_ruleset'+ruleid);
    rs_div.setAttribute('class','smartsetsnapin');

    //Pull content from snap-in and populate div
    var snap_data = ss_snapin_content[_ZSSTEMPCACHE['rules'][ruleid]['catid']](ruleid);

    var title_div = document.createElement("div");
    title_div.setAttribute('class','smartsetsnapin_title');
    title_div.innerHTML = '<a href="javascript:void(0);" onclick="ss_snapins.remove('+ruleid+')"><img border="0" src="/images/silk/delete.png" style="display:inline;float:right;" /></a><img src="'+snap_data['graphic']+'"/>'+snap_data['title'];
    rs_div.appendChild(title_div);

    snap_data['content'].setAttribute('class','smartsetsnapin_content');
    rs_div.appendChild(snap_data['content']);

    zmenu.disable($('smartsets_addzmenu'));

    try {
      $('sszmenu_cat'+_ZSSTEMPCACHE['rules'][ruleid]['catid']).hide();
    } catch (e) {
      //Must not be there...
    }

    if (_ZSSTOBEGIN == true) ss_snapins.tobegin_troggle();

    $('smartset_rule_area').appendChild(rs_div);

    new Effect.Appear($('smartset_ruleset'+ruleid));

    //Lasting affects:

    if (snap_data['opme'] == true) smartsets.updateoperators(ruleid);

    if (snap_data['postfunc'] !== undefined) snap_data['postfunc']()

    zloader.disable();

  },

  remove : function(ruleid) {
    try {
      $('sszmenu_cat'+_ZSSTEMPCACHE['rules'][ruleid]['catid']).show();
    } catch (e) {
      //Must not be there...
    }

    delete _ZSSTEMPCACHE['rules'][ruleid];

    var oNodeToRemove = $('smartset_ruleset'+ruleid);
    oNodeToRemove.parentNode.removeChild(oNodeToRemove);

    var nothing = true;
    for (k in _ZSSTEMPCACHE['rules']) {
      nothing = false;break;
    }

    if (nothing == true) ss_snapins.tobegin_troggle();

  },

  tobegin_troggle: function() {
    if (_ZSSTOBEGIN == true) {
      _ZSSTOBEGIN = false;
      $('zsstobegin').hide();
      new Effect.Appear($('sscontextdiv'));
      new Effect.Appear($('sssortmodediv'));
      new Effect.Appear($('sstitlediv'));
      new Effect.Appear($('ssphotodiv'));
    }else{
      _ZSSTOBEGIN = true;
      $('zsstobegin').show();
      $('sscontextdiv').hide();
      $('sssortmodediv').hide();
      $('ssphotodiv').hide();
      $('sstitlediv').hide();
      $('ssdescdiv').hide();
      $('smartset_title').value = '';
      $('smartset_description').value = '';
    }
  }

}

ss_snapin_content = {
  '0' : function(ruleid) { //PeopleTags
    var rs_div = document.createElement("div");

    rs_div.innerHTML += '<select id="smartset_ruleset_operator'+ruleid+'"></select> ';
    rs_div.innerHTML += '<input id="smartset_ruleset_data'+ruleid+'" name="smartset_ruleset_data'+ruleid+'" type="text" value="'+_ZSSTEMPCACHE['rules'][ruleid]['data'].replace(/"/g,"&quot;")+'" style="width:200px;" />';

    post_func = function () {
      new Ajax.Autocompleter('smartset_ruleset_data'+ruleid, 'auto_complete_area', '/contact_list.awe?formname=smartset_ruleset_data'+ruleid, {tokens: ',',frequency:0.7});
    }

    return {graphic:'/images/silk/user.png',title:gettext("PeopleTags"),content:rs_div,opme:true,postfunc:post_func};
  },

  '1' : function(ruleid) { //Tags
    var rs_div = document.createElement("div");

    rs_div.innerHTML += '<select id="smartset_ruleset_operator'+ruleid+'"></select> ';
    rs_div.innerHTML += '<input id="smartset_ruleset_data'+ruleid+'" name="smartset_ruleset_data'+ruleid+'" type="text" value="'+_ZSSTEMPCACHE['rules'][ruleid]['data'].replace(/"/g,"&quot;")+'" style="width:200px;" />';

    return {graphic:'/images/silk/tag_blue.png',title: gettext("Labels"),content:rs_div,opme:true};
  },

  '8' : function(ruleid) { //DateUploaded
    var rs_div = document.createElement("div");

    rs_div.innerHTML = '<div style="float:right;">';
    rs_div.innerHTML += '<em>Instructions: Click on the days which correspond to the dates that they were taken.</em><div class="spacer"></div>';
    rs_div.innerHTML += '<input id="smartset_ruleset_data'+ruleid+'" name="smartset_ruleset_data'+ruleid+'" type="hidden" value="'+_ZSSTEMPCACHE['rules'][ruleid]['data']+'" />';
    rs_div.innerHTML += '<input id="smartset_ruleset_operator'+ruleid+'" name="smartset_ruleset_operator'+ruleid+'" type="hidden" value="0" /></div><div id="smartset_ruleset_cal'+ruleid+'" style="margin-right:5px;"></div>';

    post_func = function () {
      _ZSSTEMPCACHE['rules'][ruleid]['cal'] = new Epoch('epoch_multi','flat',$('smartset_ruleset_cal'+ruleid),true);

      if ($F('smartset_ruleset_data'+ruleid) != '') {
        var add_array = [];
        var the_dates = $F('smartset_ruleset_data'+ruleid).split(' ');
        for (k=0;k<the_dates.length;k++) {
          add_array[add_array.length] = new Date(parseInt(the_dates[k]) * 1000);
        }
        _ZSSTEMPCACHE['rules'][ruleid]['cal'].addDates(add_array);
  //      _ZSSTEMPCACHE['rules'][ruleid]['cal'].reDraw();
      }
    }

    _ZSSTEMPCACHE['rules'][ruleid]['process_func'] = function () {
      $('smartset_ruleset_data'+ruleid).value = '';
      var new_value = [];
      var the_dates = _ZSSTEMPCACHE['rules'][ruleid]['cal'].selectedDates;
      for (i=0;i<the_dates.length;i++) {
        new_value[new_value.length] = String(Math.floor(the_dates[i].getTime()/1000));
      }

      $('smartset_ruleset_data'+ruleid).value = new_value.join(' ');

    }

    return {graphic:'/images/silk/calendar.png',title:'Date Taken',content:rs_div,opme:false,postfunc:post_func};

  },

  '2' : function(ruleid) { //DateUploaded
    var rs_div = document.createElement("div");

    rs_div.innerHTML = '<div style="float:right;">';
    rs_div.innerHTML += '<em>Instructions: Click on the days which correspond to the dates that they were uploaded to Zooomr.</em><div class="spacer"></div>';
    rs_div.innerHTML += '<input id="smartset_ruleset_data'+ruleid+'" name="smartset_ruleset_data'+ruleid+'" type="hidden" value="'+_ZSSTEMPCACHE['rules'][ruleid]['data']+'" />';
    rs_div.innerHTML += '<input id="smartset_ruleset_operator'+ruleid+'" name="smartset_ruleset_operator'+ruleid+'" type="hidden" value="0" /></div><div id="smartset_ruleset_cal'+ruleid+'" style="margin-right:5px;"></div>';

    post_func = function () {
      _ZSSTEMPCACHE['rules'][ruleid]['cal'] = new Epoch('epoch_multi','flat',$('smartset_ruleset_cal'+ruleid),true);

      if ($F('smartset_ruleset_data'+ruleid) != '') {
        var add_array = [];
        var the_dates = $F('smartset_ruleset_data'+ruleid).split(' ');
        for (k=0;k<the_dates.length;k++) {
          add_array[add_array.length] = new Date(parseInt(the_dates[k]) * 1000);
        }
        _ZSSTEMPCACHE['rules'][ruleid]['cal'].addDates(add_array);
  //      _ZSSTEMPCACHE['rules'][ruleid]['cal'].reDraw();
      }
    }

    _ZSSTEMPCACHE['rules'][ruleid]['process_func'] = function () {
      $('smartset_ruleset_data'+ruleid).value = '';
      var new_value = [];
      var the_dates = _ZSSTEMPCACHE['rules'][ruleid]['cal'].selectedDates;
      for (i=0;i<the_dates.length;i++) {
        new_value[new_value.length] = String(Math.floor(the_dates[i].getTime()/1000));
      }

      $('smartset_ruleset_data'+ruleid).value = new_value.join(' ');

    }

    return {graphic:'/images/silk/calendar.png',title:gettext("Date Uploaded"),content:rs_div,opme:false,postfunc:post_func};

  },

  '4' : function(ruleid) { //Owner
    var rs_div = document.createElement("div");

    rs_div.innerHTML += '<select id="smartset_ruleset_operator'+ruleid+'"></select> ';
    rs_div.innerHTML += '<input id="smartset_ruleset_data'+ruleid+'" name="smartset_ruleset_data'+ruleid+'" type="text" value="'+_ZSSTEMPCACHE['rules'][ruleid]['data']+'" style="width:200px;" />';

    post_func = function () {
      new Ajax.Autocompleter('smartset_ruleset_data'+ruleid, 'auto_complete_area', '/contact_list.awe?formname=smartset_ruleset_data'+ruleid, {tokens: ',',frequency:0.7});
    }

    return {graphic:'/images/silk/user.png',title:gettext("Owner"),content:rs_div,opme:true,postfunc:post_func};
  },

  '6' : function(ruleid) { //Views
    var rs_div = document.createElement("div");

    rs_div.innerHTML += '<select id="smartset_ruleset_operator'+ruleid+'"></select> ';
    rs_div.innerHTML += '<input id="smartset_ruleset_data'+ruleid+'" name="smartset_ruleset_data'+ruleid+'" type="text" value="'+_ZSSTEMPCACHE['rules'][ruleid]['data']+'" style="width:200px;" />';

    return {graphic:'/images/silk/eye.png',title:'Views',content:rs_div,opme:true};
  },

  '7' : function(ruleid) { //GeoTags
    var rs_div = document.createElement("div");

    rs_div.innerHTML = '<h3 style="margin:0;padding:0">Locate photos near the following location:</h3><em>Instructions: Click on a spot where you would like to center the map</em><div id="ss_geotagmap" style="height:250px;"></div>';
    rs_div.innerHTML += '<input id="smartset_ruleset_data'+ruleid+'" name="smartset_ruleset_data'+ruleid+'" type="hidden" value="'+_ZSSTEMPCACHE['rules'][ruleid]['data']+'" />';
    rs_div.innerHTML += '<input id="smartset_ruleset_operator'+ruleid+'" name="smartset_ruleset_operator'+ruleid+'" type="hidden" value="0" />';

    post_func = function () {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("ss_geotagmap"));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GOverviewMapControl());
        map.addControl(new GScaleControl());
        // Create our "tiny" marker icon
        var icon = new GIcon();
        icon.image = "/images/tidbits/mm_20_selected.png";
        icon.shadow = "/images/tidbits/mm_20_shadow.png";
        icon.iconSize = new GSize(12, 20);
        icon.shadowSize = new GSize(22, 20);
        icon.iconAnchor = new GPoint(6, 20);
        icon.infoWindowAnchor = new GPoint(5, 1);

        createMarker = function(point) {
          var marker = new GMarker(point, icon);
          GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml("<p>This point was selected on the map!</p>");
          });
          return marker;
        }

        var snap_data = $F('smartset_ruleset_data'+ruleid);
        if (snap_data == '') {
          map.setCenter(new GLatLng(38.8225909761771, -95.2734375), 3);
        } else {
          var snap_data_split = snap_data.split(',');
          var point = new GLatLng(parseFloat(snap_data_split[0]), parseFloat(snap_data_split[1]));
          map.setCenter(point, parseInt(snap_data_split[2]));

          var the_marker = createMarker(point);
          map.addOverlay(the_marker);
        }


        GEvent.addListener(map, "click", function(marker, point) {
          if (point) {
            map.clearOverlays();
            var the_marker = createMarker(point);
            map.addOverlay(the_marker);
            map.panTo(point);
//              the_marker.openInfoWindowHtml("<p>This point was selected on the map!</p>");
          }
        });

        GEvent.addListener(map, "moveend", function() {
          var center = map.getCenter();
          $('smartset_ruleset_data'+ruleid).value = String(center.lat()) + ',' + String(center.lng()) + ',' + String(map.getZoom());
        });

      }
    }

    return {graphic:'/images/silk/world.png',title:'GeoTags',content:rs_div,opme:false,postfunc:post_func};
  }


}

_ZMENUOPEN = false;

zmenu = {

  trigger : function(what,x,y) {
    if (_ZMENUOPEN == false) {
      zmenu.enable(what,x,y);
    }else{
      zmenu.disable(what);
    }
  },

  enable : function(what,x,y) {
    what.style.left = x;
    //what.style.top = y;
    what.style.offsetTop = y;
    what.style.display = 'block';
    _ZMENUOPEN = true;
  },

  disable : function(what) {
    what.hide();
    _ZMENUOPEN = false;
  }

}
