var locker=null,
    shown=false,
    cleaner=null,
    mapper=null,
    start_position=null;

var insertions=new NamedInsertion();

function get_last_div(par,cl){
  return $(par).down(cl+':last-child');
}

function create_remover(link,add,par,top,sel){
 if(!sel)
    sel=par.nodeName.toLowerCase()+'.'+par.className.replace(/(^|\s+)float-left($|\s+)/,'');

  top=$(top);
  par=$(par);

  $(link).observe('click',function(){par.remove();});
}


function create_adder(top_level,name,cl){
  return function(){
    var tmp,t2;
    insertions.insert_for(name);
    if((tmp=get_last_div(top_level,cl))&&(t2=tmp.select('textarea')).length>0){
      for(var i=0;i<t2.length;++i){
        t2[i].id=unique_id('textarea');
        tinyMCE.execCommand('mceAddControl',false,t2[i].id);
      }
    }
  }
}

function set_selection(p,li,holder,input,hidden){
  li=$(li);
  if(id=li.down('.related-alert-id')){
    input.value=li.down('.related-alert-title').innerHTML;
    hidden.value=id.innerHTML;
  }
}

function related_alert_set_up_completion(){
 
  if(!related_alert_set_up_completion.elem)
    related_alert_set_up_completion.elem=$('related-alerts-holder');
  if(Object.isUndefined(related_alert_set_up_completion.zIndex))
    related_alert_set_up_completion.zIndex=100000;
  var last_div_arr=related_alert_set_up_completion.elem.select('div.related-alert');
  var last_div=last_div_arr[last_div_arr.length-1];
  last_div.style.zIndex=related_alert_set_up_completion.zIndex;
  related_alert_set_up_completion.zIndex-=1;
  var add_handler=create_adder(related_alert_set_up_completion.elem,'related-alerts','div.related-alert');

  last_div.down('div.size85').observe('click',function(){
   // alert('hi');
    last_div.remove();
    if(related_alert_set_up_completion.elem.select('div.related-alert').length==0)
      add_handler();
  });

  last_div.down('div.size64').observe('click',add_handler);

  var hidden=last_div.down('.related-id');
  var input=last_div.down('.related-title');
  var completer=last_div.down('.related-alert-autocompleter');

  new Ajax.Autocompleter(input,completer,
                         '/alerts/related_alerts_search',
                         {paramName: 'title',minchars: 2, indicator: last_div.down('.related-alert-spinner'), updateElement: function(x){
						 
						 set_selection(this,x,last_div,input,hidden)}});


}

function count(elem,what){
  return $(elem).select(what).length;
}

function embedded_video_set_up(){
 
    set_up_handlers();

  var last_div=embedded_video_set_up.elem.down('div.related-video:last-child');
  create_remover(last_div.down('.remove-related-video'),embedded_video_set_up.add_handler,last_div,embedded_video_set_up.elem);
}

function embeded_newslink_set_up(){
  if(!embeded_newslink_set_up.elem)
    set_up_handlers();
  var last_div=embeded_newslink_set_up.elem.down('div.embedded-newslink:last-child');
  create_remover(last_div.down('.remove-embedded-newslink'),embeded_newslink_set_up.add_handler,last_div,embeded_newslink_set_up.elem);
}

function embedded_photo_set_up(){
  if(!embedded_photo_set_up.elem)
    set_up_handlers();

  var last_div=embedded_photo_set_up.elem.down('div.related-photo:last-child');
  create_remover(last_div.down('.remove-related-photo'),embedded_photo_set_up.add_handler,last_div,embedded_photo_set_up.elem)

  new EmbeddedPhotoUploader('/upload.php',window.session_id,last_div);
}


function set_up_handlers(){
  if(set_up_handlers.done)
    return;

  embedded_video_set_up.elem=$('videos-block');
  embedded_video_set_up.add_handler=create_adder(embedded_video_set_up.elem,'related-videos','div.related-video');
  if ($('add_video')) {
	  $('add_video').observe('click',embedded_video_set_up.add_handler);
  }
  
  embeded_newslink_set_up.elem=$('news-block');
  embeded_newslink_set_up.add_handler=create_adder(embeded_newslink_set_up.elem,'related-newslinks','div.embedded-newslink');
  if ($('add_blog')) {
	  $('add_blog').observe('click',embeded_newslink_set_up.add_handler);
  }
  embedded_photo_set_up.elem=$('photos-block');
  embedded_photo_set_up.add_handler=create_adder(embedded_photo_set_up.elem,'related-photos','div.related-photo');
  if ($('add_blog')) {
	  $('add_photo').observe('click',embedded_photo_set_up.add_handler);
  }
  set_up_handlers.done=true;
}

function check_all_relations(evt){
  $('alert_submit').disabled = true 
  //if ($('alert_submit').disabled == true){
    //$('alert_msg').style.display='block';
  //}
  //if(!$('i_agree').checked)
  if (false) {
    
	alert('Please confirm you\'ve read and agree to terms of use!');
	   
    Event.stop(evt);
	$('alert_submit').disabled = false 
    return false;
  }

  var divs=related_alert_set_up_completion.elem.select('div.related-alert');

  for(var i=0;i<divs.length;++i){
    var input=divs[i].down('.related-title');
    if(input.value.match(/^\s*$/))
      divs[i].down('.related-id').value='';
  }

  if(cleaner)
    cleaner();

  if(miles()){
    $('alert_radius_type').value='km';
    measure_change.apply($('alert_radius_type'));
  }
 //$('alert_msg').style.display='block';
  
}

function preset_video_form(content){
  return content.replace(/\[rnd_\d+\]/g,'[rnd_'+Math.random().toString().substr(2)+']');
}

function make_unknowner(e){
  e=$(e);

  e.setStyle({backgroundColor: '#EEEBE7',color: '#555'});
  e.value='unknown';

  e.observe('focus',function(){
    e.setStyle({backgroundColor: '#F7F7F7',color: '#000'});
    e.value='';
  });

  e.observe('blur',function(){
    if(e.value.blank()||e.value=='0'){
      e.setStyle({backgroundColor: '#EEEBE7',color: '#555'});
      e.value='unknown';
    }
  });

  return function(){
    if(e.value=='unknown')
      e.value=0;
  };
}

function defaultize_with_unknown(){
  var t;
  var x=[];
  var p=Object.isArray(arguments[0]) ? arguments[0] : arguments;

  for(var i=0;i<p.length;++i){
    if((t=$(p[i]))&&t&&(t.value.blank()||t.value=='0'||t.value=='unknown'))
      x.push(make_unknowner(t));
  }

  return function(){
    for(var i=0;i<x.length;++i)
      x[i]();
  };
}

var EmbeddedPhotoUploader=Class.create({
  initialize: function(url,sess_id,container){
    this.container=$(container);
    this.upload_progress=container.down('.upload_progress');
    this.photo_before=container.down('.upload_button');
    this.upload_button=this.photo_before.down('div');
    this.upload_file_id=container.down('.upload-file-id');
    this.title=container.down('.related-photo-title');

    if(!this.upload_button.id)
      this.upload_button.id=this.unique_id()

    this.upload_holder=container.down('.upload');
    this.upload_photo=container.down('.photo')
    this.photo_id=container.down('.embedded-photo-id').value;
    this.sess_id=sess_id;
    this.folder_name = '120x90-fit';
    this.width = 120;
    this.height = 90;
    this.url=url;

    this.init_uploader();
  },

  unique_id: function(){
    var s='unique_id_'+Math.random().toString().substring(2);

    while($(s))
      s+=Math.random().toString().substring(2);

    return s;
  },

  build_url: function(){
    var u=this.url;
    var cnt=0,i=0;

    if(u.indexOf('?')==-1)
      u+='?';

    u+='swfupload_sid='+this.sess_id;

    if(this.photo_id)
      u+='&photo_id='+this.photo_id;

    if(this.upload_file_id.value.length>0)
      u+='&upload_file_id='+this.upload_file_id.value;

    return u;
  },
  
  init_uploader: function(){
    this.swfu=new SWFUpload({
      flash_url : "/js/dui/swfupload/swfupload.swf",
      upload_url: this.build_url(),
      post_params: {folder: this.folder_name, type:'photo'},
      file_size_limit : "3 MB",
      file_types : "*.jpg;*.gif;*.png",
      file_queue_limit : 1,
      debug: false,

      button_placeholder_id: this.upload_button.id,
      button_image_url: '/img/upload_btn_61x22.png',
      button_width: 61,
      button_height: 22,

      
      file_queued_handler: this.on_file_queued.bind(this),
      upload_progress_handler: this.on_upload_progress.bind(this),
      upload_success_handler: this.on_upload_success.bind(this)
    });
  },

  set_photo: function(url){
    if(!this.upload_photo){
      this.upload_photo=new Element('div',{'class': 'photo'});
      this.upload_photo.appendChild(new Element('img',{'id': 'embedded_photo_img'}));
      this.upload_holder.insertBefore(this.upload_photo,this.photo_before);
    }
    var i=this.upload_photo.down('img');
    i.src="/utils/phpThumb?src=/resampled/"+this.folder_name+"/uploads/"+url+'&w='+this.width+'&h='+this.height;
    i.style.display='block';
  },

  on_upload_success: function(file,response){
    this.upload_progress.hide();
    var ret=response.evalJSON();
    if (ret.success == true) {
	    this.set_photo(ret.filename);
	    this.container.down('.remove-related-photo').show();
	    this.upload_file_id.value=ret.id;
	    
	    this.container.select('tr.invisible-field').map(function(x){x.className='';});
	    if (ret.title) {
	    	this.title.value=ret.title;
	    }
    }
  },

  on_upload_progress: function(file,complete,total){
    this.upload_progress.style.width=(100*complete/total)+'%'; 
  },

  on_file_queued: function(){
    this.upload_progress.show();
    this.swfu.startUpload();
  }
});

function getDataFromFlash(str){
 // alert(str);
  var t=str.split(',');
  //alert(t[2]);
  try{
    $('alert_lon').value=t[0];
    $('alert_lat').value=t[1];
    $('alert_radius').value=degree_to_km(Math.round(parseFloat(t[2]))/(miles()?1.609344:1));
  }catch(e){}
}

function miles(){
 //alert("miles");
 //alert($('alert_radius').value)
 //alert($('alert_radius_type').value=='miles')
  return $('alert_radius_type').value=='miles';
}

function measure_change(){
  var rad=$('alert_radius');
  if(!rad.value.match(/^\s*$/)){
    var v=parseFloat(rad.value);
    $('alert_radius').value=(Math.round(miles() ? v/1.609344 : v*1.609344));
  }
  BingMapsObj.reDrawFromForm();
}
