KB.Import={
    Events:{
        URL_LOADED:'import:urlloaded'
    }
};
KB.Import.Content = Class.create(
{
	element:null,
	dataElement:null,
	previewElement:null,
	errorElement:null,
	importUrl:null,
    initialize:function(element, dataElement, previewElement, errorElement, importUrl){
		this.element=element;
		this.previewElement=previewElement;
		this.errorElement=errorElement;
		this.dataElement=dataElement;
		this.importUrl=importUrl;
		
		$(this.element).observe('blur', this.blurHandler.bind(this)).observe('focus', this.focusHandler.bind(this));
    },
    blurHandler: function(event){
		if(this.isUrl(this.element.value)){
			this.showPreview();
		} else if(this.isUrl('http://'+this.element.value)) {
			this.element.value='http://'+this.element.value;
			this.showPreview();
		} else {
			this.errorElement.update('Please enter a valid url!');
		}
    },
    focusHandler: function(event){
    	this.errorElement.update('');
    },
    showPreview: function(){
	    var url=this.importUrl+'?ajax=1'+'&url='+this.element.value;
	    this.previewElement.update("<div id='loader'/>");
	    new Ajax.Request(url, {
	        method: 'get',
	        evalJSON:true,
	        onSuccess:this.showPreviewResultHandler.bind(this) 
	    });
    },
    showPreviewResultHandler: function(transport) {
    	try{
    		if(transport.responseText=="-1") throw('dummy error');
    		var obj=transport.responseText.evalJSON();
    		this.previewElement.update('<br/>Preview:<br/>'+obj.previewHTML);
    		obj.previewHTML='';
    		this.dataElement.value = Base64.encode(Object.toJSON(obj));
            KB.Event.fire(null, KB.Import.Events.URL_LOADED, obj);
    	} catch(e){
    		this.previewElement.update('');
    		this.errorElement.update('Can not load video from the url.  Maybe it\'s us, but please double check it anyway');
    	}
    },
    
    isUrl: function(str){
    	var regex=/^[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_%&\?\/.=]+$/i;
    	return !!str.match(regex);
    }
});
