/*************************************************
 * Share attachment 
 * requir: /js/fb/*
 *************************************************/


function wall_video_thumb_adjust(play_img_div,thumb_img){
    if(parseInt(ua.ie())==6){
	play_img_div.style.marginTop=(-1*thumb_img.height-3)+'px';
	play_img_div.style.paddingTop=(thumb_img.height-19)+'px';
    }
    play_img_div.style.display='block';
}
function attachments(){
    this.attachment_added=false;
    this.attachment_oid=null;
    this.attachment_app_id=null;
    this.is_share=false;
    this.attached_share=false;
    this.scrape_last_count=0;
    this.wall_attachments={};
}
attachments.prototype.show_attachment_edit=function(title,html,share_type,ajax_params){
    var is_app=(share_type==14);
    attachments.is_share=(share_type==100);
    var wrapper='<div id="attachment_edit_container">'
    +'<div id="attachment_edit_loading">&nbsp</div>'
    +'</div>';

    if(attachments.__is_opened) return;

    new pop_dialog('attachment_dialog')
    .show_choice(title+'&nbsp;',wrapper,'&nbsp;确定&nbsp;',
		 function(){
		     if(attachments.is_share){
			 attachments.share_attach();
		     }else{
			 attachments.attach(is_app);
		     }
		     generic_dialog.get_dialog(this).hide();},
		 '&nbsp;取消&nbsp;',
		 function(){
		     generic_dialog.get_dialog(this).fade_out(100);
		     attachments.remove_attachment_view();
		 });
    var container=ge('attachment_edit_container');
    var div=document.createElement('div');
    div.className='share_stage';
    div.id='attachment_edit';
    div.is_app=is_app;
    container.appendChild(div);
    set_inner_html(div,html);
    return div;
}
attachments.prototype.show_attachment_view=function(html,is_app){
    var container=ge('attachment_view_container');
    var div=document.createElement('div');
    div.className='share_stage';
    div.id='attachment_view';
    div.is_app=is_app;
    container.appendChild(div);
    set_inner_html(div,html);
    hide('attachment_buttons_list');
    var wrapper=ge('attachment_view_wrapper');
    wrapper.style.display='block';
    attachments.attachment_added=true;
    return div;
}
attachments.prototype.remove_attachment_view=function(){
    var container=ge('attachment_view_container');
    var attachment=ge('attachment_view');
    if(attachments.attachment_added&&attachment){
	attachment.removed=true;
	container.removeChild(attachment);
	hide('attachment_view_wrapper');
	if(ge('attachment_buttons_list')){
	    show('attachment_buttons_list');
	}
	var attachment_remove=ge('attachment_remove');
	attachment_remove.className=attachment_remove.className.replace(' edit','');
    }
    attachments.attachment_added=false;
    attachments.attachment_oid=null;
    attachments.attachment_app_id=null;
    attachments.is_share=false;
    attachments.attached_share=false;
    attachments.last_url_scraped=null;
}
attachments.prototype.get_all_form_elements=function(attachment){
    var inputs=new Array();
    if(attachment){
	var html_input=attachment.getElementsByTagName('input');
	for(var i=0;i<html_input.length;i++){
	    inputs.push(html_input[i]);
	}
	var html_select=attachment.getElementsByTagName('select');
	for(var i=0;i<html_select.length;i++){
	    inputs.push(html_select[i]);
	}
    }
    return inputs;
}
attachments.prototype.get_attachment_input_string=function(attachment){
    if(!attachment){return'';}

    var ret='';
    var inputs=attachments.get_all_form_elements(attachment);
    if(attachment.is_app){
	for(var i=0;i<inputs.length;i++){
	    if(!(inputs[i].type=="radio"||inputs[i].type=="checkbox")
	       ||inputs[i].checked){
		if(ret!=''){ret+='&';}
		
		ret+='attachment[app]['+inputs[i].name+']='+escapeURI(inputs[i].value);
	    }
	}
	ret+='&attachment[type]=14';
    }else{
	var has_type=false;
	for(var i=0;i<inputs.length;i++){
	    if(ret!=''){
		ret+='&';
	    }
	    if(inputs[i].name=='attachment[type]'){
		has_type=true;
	    }
	    if(inputs[i].name=='attachment[params][url]'){
		if(!inputs[i].value||inputs[i].value=='http://'){return'';}
	    }
	    ret+='&'+inputs[i].name+'='+escapeURI(inputs[i].value);
	}
	if(!has_type){return'';}
    }
    ret+='&context='+attachments.context;
    return ret;
};
attachments.prototype.attach=function(is_app){
    var attachment=ge('attachment_edit');
    var ajax_params=attachments.get_attachment_input_string(attachment);
    if(!ajax_params){return;}
    var loading=ge('attachment_view_loading');
    loading.style.display='block';
    var ajaxUrl='/ajax/attachments.php';
    var ajax=new Ajax();
    var view_container=attachments.show_attachment_view('',is_app);
    ajax.onDone=function(ajaxObj,responseText){
	var responseObj=eval("("+responseText+")");
	if(!view_container.removed){
	    hide('attachment_view_loading');
	    set_inner_html(view_container,responseObj['html']);
	    attachments.attachment_oid=responseObj['oid'];
	    attachments.attachment_app_id=responseObj['app_id'];
	    var scroll=ge('scroll_here');
	    if(scroll){
		scroll.id='scroll_dummy';
	    }
	    $('attachment_view_container').parentNode.id='scroll_here';
	    var scroll_obj=ge('scroll_here');
	    var scroll_page_obj=null;
	    if(attachments.context==1){
		scroll_page_obj=ge('wall_post_form');
	    }else if(attachments.context==3){
		scroll_page_obj=ge('compose_message');
	    }
	}
    }
    ajax.post('/ajax/attachments.php',ajax_params);
};
attachments.prototype.get_attachment_post_string=function(){
    var ret='';
    if(attachments.attachment_added){
	if(attachments.attached_share){
	    ret+=attachments.get_attachment_input_string(ge('attachment_view'));
	}else{
	    ret+='&attachment[oid]='+attachments.attachment_oid;
	    ret+='&attachment[app_id]='+attachments.attachment_app_id;
	}
    }
    return ret;
};
attachments.prototype.submit_wall_post=function(){
    var attachment=ge('attachment_view');
    if(attachment){
	var inputs=attachments.get_all_form_elements(attachment);
	for(var i=0;i<inputs.length;i++){
	    inputs[i].disabled=true;
	}
    }
};
attachments.prototype.show_full_attachment=function(post_id){
    if(typeof this.wall_attachments[post_id]!='string'){return;}
    hide('attachment_compact_'+post_id);
    hide('attached_item_info_'+post_id);
    hide('attachment_compact_td_'+post_id);
    attachment_div=ge('wall_attachment_'+post_id);
    set_inner_html(attachment_div,this.wall_attachments[post_id]);
};
attachments.prototype.fix_app_inputs_on_send=function(){
    var attachment=ge('attachment_view');
    if(!attachments.attachment_added||!attachment){return;}
    if(!attachments.attached_share){
	new_inputs=new Array();
	new_inputs.push(create_hidden_input('attachment[oid]',attachments.attachment_oid));
	new_inputs.push(create_hidden_input('attachment[app_id]',attachments.attachment_app_id));
	if(attachment.is_app){
	    new_inputs.push(create_hidden_input('attachment[type]',14));
	    new_inputs.push(create_hidden_input('attachment[app][message_sent]',true));
	}
	for(var i=0,il=new_inputs.length;i<il;i++){
	    attachment.appendChild(new_inputs[i]);
	}
    }
};
attachments.prototype.share_attach_from_dialog=function(){
    attachments.share_attach();
    generic_dialog.get_dialog(ge('attachment_edit_container')).hide();
};
attachments.prototype.share_attach=function(){
    var share_link=ge('share_link');
    var url=share_link.value;
    if(url&&url!='http://'){
	attachments.share_submit_url(url);
    }
};
attachments.prototype.share_submit_url=function(url){
    attachments.show_attachment_view(attachments.share_html_block,false);
    var view_container=ge('attachment_view_container');
    var stage_area=view_container.childNodes[0].childNodes[0].childNodes[0];
    attachments.attach_link_url(stage_area,url,true);
    var attachment_remove=ge('attachment_remove');
    attachment_remove.className+=' edit';
    attachments.attached_share=true;
};
attachments.prototype.attach_link_url=function(obj,url,show_loading){
    var attachment=composer_attachment.from_url(url);
    if(!attachment){return;}
    attachment._onLoad_callback = this._onLoad_callback;
    attachment.container_ready(obj,show_loading);
};
attachments.prototype.detect_url=function(obj,force){
    var url='';
    var start_position=-1;
    var end_position=-1;
    if(force==true){
	if(url=obj.value.match(/www\.\S*/i)){
	    start_position=obj.value.indexOf(url[0]);
	    end_position=start_position+url[0].length;
	    url="http://"+url[0];
	}else{
	    var match='';
	    if(match=obj.value.match(/http:\/\/\S*/i)){
		url=match[0];
		start_position=obj.value.indexOf(match[0]);
		end_position=start_position+match[0].length;
	    }
	}
    }else{
	if(url=obj.value.match(/www\.\S*[\s|\)|\!]/i)){
	    start_position=obj.value.indexOf(url[0]);
	    end_position=start_position+url[0].length;
	    url="http://"+url[0];
	}else{
	    var match='';
	    if(match=obj.value.match(/http:\/\/\S*[\s|\)|\!]/i)){
		url=match[0];
		start_position=obj.value.indexOf(match[0]);
		end_position=start_position+match[0].length;
	    }
	}
    }
    if(url){
	url=url.replace(/[\s|\)|\!]/g,'');
	var last_char=url.charAt(url.length-1);
	if(last_char.match(/[,|.]/)){
	    url=url.substr(0,url.length-1);
	}
	var cursor_position=get_caret_position(obj).start;
	if(url!=attachments.last_url_scraped
	   &&cursor_position
	   &&start_position>=0
	   &&end_position>=0
	   &&(cursor_position<start_position||cursor_position>=end_position)
	   ){
	    attachments.last_url_scraped=url;
	}else{url='';}
    }
    return url;
};
attachments.prototype.auto_scrape_url=function(obj){
    if(attachments.attachment_added){return false;}
    if(!attachments.scrape_last_count){attachments.scrape_last_count=0;}
    if((obj.value.length-attachments.scrape_last_count)>5
       ||(attachments.scrape_last_count==0&&obj.value.length>1)
       ){
	var force=true;
    }
    var url=attachments.detect_url(obj,force);
    if(url){
	attachments.share_submit_url(url);
    }
    attachments.scrape_last_count=obj.value.length;
    return false;
};
attachments.prototype.start_textarea_interval=function(obj){
    attachments.textarea_obj=obj;
    
    attachments.textarea_interval=
    setInterval(attachments.textarea_interval_function,50);
};
attachments.prototype.textarea_interval_function=function(){
    if(typeof attachments!='undefined'
       &&attachments.textarea_obj
       &&(!attachments.attachment_added)
       ){
	attachments.auto_scrape_url(attachments.textarea_obj);
    }else{
	attachments.stop_textarea_interval();
    }
};
attachments.prototype.stop_textarea_interval=function(){
    clearInterval(attachments.textarea_interval);
};
var attachments=new attachments();