/**
 * 
 *  asset.application.js
 *  Written by Yuta Konishi, Carocara,Inc. 2011
 * 
 * @package    konreiya.com
 * @subpackage javascript
 * @author     Yuta Konishi
 *
 */

var js_asset_form;
var asset_ajax_load;

$(document).ready(function(){
    
    asset_ajax_load = function(){
    	
    	$('#icon_lists_button').click(function(){
    		$('#icon_lists').toggle("slow");
    	});
    	
	    $('.asset_ajax_load').each(function(i, data){
	    	
	    	var asset_key = $(data).attr('asset_key');
	    	var limit = $(data).attr('limit') | 0;
	    	
	    	$.ajax({
	    		url: '/asset/list/asset_key/'+asset_key,
	    		type: 'get',
	    		dataType: 'json',
	    		beforeSend: function(){
	    		},
	    		success: function(json){
	    			
	    			html = '';
	    			$.each(json.asset_lists, function(i, data){
	    				html += '<img src="/uploads'+data.icon+'" class="asset_thumbnail" asset_id="'+data.id+'" />';
	    			});
	    			if( parseInt(json.asset_lists.length) >= parseInt(limit) ){
	    				$('#asset_button_'+asset_key).attr('disabled', 'disabled');
	    			} else {
	    				$('#asset_button_'+asset_key).attr('disabled', null);
	    			}
	    			if(html){
		    			$('#asset_list_'+asset_key).hide()
		    			$('#asset_list_'+asset_key).html(html);
		    			$('.asset_thumbnail').unbind();
						$('.asset_thumbnail').click(function(){ asset_thumbnail(this); });
						$('#asset_list_'+asset_key).fadeIn('slow');
					}
	    		}
	    	});
	    });
	    
	}
    var js_asset_upload = function(){
    	
    	var contents;
    	
    	iframe = $('<iframe name="asset_upload_iframe" style="position:absolute;top:-9999px" />').appendTo('body');
    	// $('#asset_form').submit();
    	
    	$('#asset_form').submit(function(){
	    	
	    	$('.upload_modal').hide();
	    	modal({'upload':1,'nolock':1});
	    	
	    	iframe.load(function() {
	    		
	    		contents = $(iframe).contents();
				var json = window.eval('(' + $(contents).find('body').html() + ')');
				setTimeout(function() {
					
					iframe.remove();
					$('#asset_form').remove();
					unmodal();
					
					if(json.error){
						modal({'header':'アップロードエラー','body':json.value});
						$('#asset_form').remove();
					} else {
						modal({'header':'アップロード完了','body':json.value,'timeout':1000});
						html = '';
						$.each(json.asset_lists, function(i, data){
							html += '<img src="/uploads'+data.icon+'" asset_id="'+data.id+'" class="asset_thumbnail" />';
						});
						$('#asset_list_'+json.asset_key).html(html);
						$('.asset_thumbnail').unbind();
						$('.asset_thumbnail').click(function(){ asset_thumbnail(this); });
						
						limit = $('#asset_list_'+json.asset_key).attr('limit');
						
						if( parseInt(json.asset_lists.length) >= parseInt(limit) ){
    						$('#asset_button_'+json.asset_key).attr('disabled', 'disabled');
    					} else {
    						$('#asset_button_'+json.asset_key).attr('disabled', null);
    					}
    					$('#asset_form').remove();
					}
					
				}, 0);
	    	});
	    	
    	}).submit();
    	
    }
    var asset_thumbnail = function(obj){
    	
    	unmodal();
    	
    	var asset_id = $(obj).attr('asset_id');
    	var profile = $(obj).parent().attr('profile');
    	
    	$.ajax({
    		url: '/asset/edit/asset_id/'+asset_id,
    		dataType: 'html',
    		type: 'get',
    		beforeSend: function(){
    		},
    		success: function(html){
    			lockscreen();
    			$('body').append(html);
    			if(profile == 'false') $('.js_asset_profile').hide();
    			$('.js_asset_delete').unbind();
    			$('.js_asset_profile').unbind();
    			$('.js_asset_delete').click(function(){ js_asset_delete(); });
    			$('.js_asset_profile').click(function(){ js_asset_profile(); });
    		},
    		error: function(){
    			modal({'dberror':1});
    		}
    	});
    	
    }
    var js_asset_profile = function(){
    	
    	if( window.confirm('画像をプロフィールに設定します。') ) {
	    	sendData = $('#asset_form').serializeArray();
    		if(!sendData){
    			modal({'header':'システムエラー', 'body':'作業中にエラーが生じました。'});
    			return;
    		}
    		$.ajax({
    			url: '/asset/profile',
    			data: sendData,
    			dataType: 'json',
    			type: 'post',
    			success: function(json){
    				if(json.error){ modal({'dberror':1}); return; }
    				unmodal();
    				html = '';
					$('#asset_form').remove();
					modal({'header':'プロフィールに設定しました', 'body':'写真をプロフィールに設定しました。', 'timeout':800});
					
					if(json.value.rect){
						$('#icon_thumbs').attr('src', '/uploads/'+json.value.rect);
						$('#topbar-icon').attr('src', '/uploads/'+json.value.thumbnail);
					} else {
						$('#topbar-icon').attr('src', '/images/profile_icon_thumbnail.jpg');
						$('#icon_thumbs').attr('src', '/images/profile_icon.jpg');
					}
					
    			},
    			error: function(){
    				modal({'dberror':1});
    			}
    		});
    		
    	} else {
    		$('#asset_form').remove();
    		unmodal();
    	}
    	
    }
    var js_asset_delete = function(){
    	
    	if( window.confirm('画像を削除します。この作業はもとに戻せません。') ) {
	    	sendData = $('#asset_form').serializeArray();
    		if(!sendData){
    			modal({'header':'システムエラー', 'body':'作業中にエラーが生じました。'});
    			return;
    		}
    		$.ajax({
    			url: '/asset/delete',
    			data: sendData,
    			dataType: 'json',
    			type: 'post',
    			success: function(json){
    				
    				unmodal();
    				if(json.error){ 
    					modal(json.modal);
    					$('#asset_form').remove();
    					return;
    				}
    				html = '';
					$.each(json.asset_lists, function(i, data){
						html += '<img src="/uploads'+data.icon+'" asset_id="'+data.id+'" class="asset_thumbnail" />';
					});
					$('#asset_list_'+json.asset_key).html(html);
					$('.asset_thumbnail').unbind();
					$('.asset_thumbnail').click(function(){ asset_thumbnail(this); });
					
					$('#asset_form').remove();
					modal({'header':'削除完了しました', 'body':'削除完了しました。', 'timeout':800});
					
					limit = $('#asset_list_'+json.asset_key).attr('limit');
					if( parseInt(json.asset_lists.length) >= parseInt(limit) ){
    					$('#asset_button_'+json.asset_key).attr('disabled', 'disabled');
    				} else {
    					$('#asset_button_'+json.asset_key).attr('disabled', null);
    				}
					if(json.value.rect){
						$('#icon_thumbs').attr('src', '/uploads/'+json.value.rect);
						$('#topbar-icon').attr('src', '/uploads/'+json.value.thumbnail);
					} else {
						$('#topbar-icon').attr('src', '/images/profile_icon_thumbnail.jpg');
						$('#icon_thumbs').attr('src', '/images/profile_icon.jpg');
					}
					
    			},
    			error: function(){
    				modal({'dberror':1});
    			}
    		});
    		
    	} else {
    		$('#asset_form').remove();
    		unmodal();
    	}
    };
    
    js_asset_form = function(obj){
    	unmodal();
    	var asset_key = $(obj).attr('asset_key');
    	if(!asset_key){
    		modal({'header':'System Error', 'body':'システムエラーです。asset_keyが見つかりません。asset_keyを設定してください。'});
    		return;
    	}
    	$.ajax({
    		url: '/asset/form/asset_key/'+asset_key,
    		type: 'get',
    		dataType: 'html',
    		success: function(html){
    		    lockscreen();
    			$('body').append(html);
    			$('.js_asset_upload').click(function(){  js_asset_upload(); });
    		},
    		error: function(){
    			modal({'dberror':1});
    		}
    	});
    }
    $('.asset_thumbnail').click(function(){ asset_thumbnail(this); });
    $('.js_asset_form').click(function(){ js_asset_form(this); });
    
    asset_ajax_load();
    
});
