var request = window.location.href;
var domain_replace = request.match(/^https?:\/\/(.+?)\//)[1]||document.domain;
request	= request.replace(domain_replace, document.domain);

resourceAjaxFormSubmit = function(formObj) {
	var options = {
		url: request,
		dataType: 'json',
		type: 'POST',
		iframe: true,
		success: function(data, status) {
			if( data.XID ) //Update the security code in the form
				$(formObj).find("input[@name='XID']").val(data.XID);
			
			if( typeof(resourcePostSubmit) == "function" ) {
				resourcePostSubmit($.extend(data, {form: formObj}));
				return false;
			}
			
			if( data.success == '1' ) {
				if(typeof data.resource_message != "undefined") {
					displayMessage(data.resource_message, '#resource_message');
				}
				
				if( $(formObj).find("input[@name='resource_redirect']").val() == '1' ) {
					setTimeout(function() {window.location = data.return_url;}, 2000);
				}
			} else if( data.success == '0' && typeof data.resource_errors != "undefined") {
				displayMessage(data.resource_errors, null);
			}
			
			return false;
		}
	};
	
	$(formObj).ajaxSubmit(options);
	return false;
}

resourceDownload = function(link) {
	if( typeof(resourceAjaxACT) == "undefined" ) return false;
	var rparams = parseParams($(link).attr('href'));
	var auth = $('#resource_auth_code'+rparams.resource_id).val()||'';
	$.ajax({
		url: request,
		type: 'GET',
		dataType: 'json',
		data: $.extend(rparams, {resource_auth_code:auth, ajax_link:'1'}),
		complete: function(xhr, status) {
			var data = evalXJSONHeader(xhr);
			if( typeof(resourcePostSubmit) == "function" ) {
				resourcePostSubmit(data);
			} else if( data.success == '0' ) {
				displayError(data.resource_errors, null);
			}
			if( data.success == '1' ) {
				var id = 'resourceIframe' + (new Date().getTime());
				var $io = $('<iframe name="'+id+'" id="'+id+'" />');
				
				$io.attr('src', request+'?ACT='+data.ACT+'&resource_id='+data.resource_id+'&resource_auth_code='+auth);
				$io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
				$io.appendTo('body');
			}
		}
	});
	bindResourceDownloadClick();
	return false;
}

displayMessage = function(msgObj, el) {
	var errorStr = '';
	if(msgObj.length) {
		for(var i=0, len=msgObj.length; i<len; ++i) {
			errorStr += msgObj[i].toString()+"\n";
		}
	} else if(typeof msgObj == 'object') {
		jQuery.each(msgObj, function() {
			errorStr += this.toString()+"\n";
		});
	} else {
		errorStr = msgObj.toString();;
	}
	if(errorStr != '' && el == null) alert(errorStr);
	else $(el).html(errorStr);
}

bindResourceDownloadClick = function() {
	$('.resource_download_link').unbind('click');
	$('.resource_download_link').bind('click', function() {return resourceDownload(this);});
}

bindResourceMemberSearch = function() {
}

bindResourceMemberAddRemove = function() {
	$('.resource_add_member').bind('click', function() {
		$('#resource_member_pool .resource_member').moveTo('#resource_members', {
			removeClass: 'resource_member',
			beforeMove: function(from, to) {
				var field = $(from).find('input');
				$(field).attr('name', 'delete_member[]');
				$('#resource_members .member').each(function() {
					if($(this).find('input').val() == $(field).val()) {
						$(this).replaceWith(from);
						return false;
					}
				});
			},
			afterMove: function(from, to) {
				var field = $(from).find('input');
				$(field).attr('name', 'member_id[]');
			}
		});
		return false;
	});
	$('.resource_remove_member').bind('click', function() {
		$('#resource_members .resource_member').moveTo('#resource_member_pool', {
			removeClass: 'resource_member',
			beforeMove: function(from, to) {
				var field = $(from).find('input');
				$(field).attr('name', 'delete_member[]');
				$('#resource_member_pool .member').each(function() {
					if($(this).find('input').val() == $(field).val()) {
						$(this).replaceWith(from);
						return false;
					}
				});
			},
			afterMove: function(from, to) {
				var field = $(from).find('input');
				$(field).attr('name', 'delete_member[]');
			}
		});
		return false;
	});
}

bindResourceMemberClick = function() {
	$('.member').bind('click', function() {
		if( $(this).hasClass('resource_member') )
			$(this).removeClass('resource_member');
		else
			$(this).addClass('resource_member');
	});
}

bindResourceRemove = function() {
	$('.resource_remove_link').bind('click', function() {
		var link = $(this);
		$.ajax({
			url: link.attr('href'),
			dataType: 'json',
			type: 'get',
			success: function(data) {
				if(data.success == '1') {
					if($('.resource_message').length > 0) {
						$('.resource_message').empty().append(data.message);
					} else {
						alert(data.message);
					}
				} else {
					msg = data.errors.join('<br />');
					if($('.resource_error').length > 0) {
						$('.resource_error').empty().append(msg);
					} else {
						alert(msg);
					}
				}
				$.event.trigger('resource_remove_end');
			}
		});
		return false;
	});
}

evalXJSONHeader = function(xhrObj) {
	return eval('('+xhrObj.getResponseHeader('X-JSON')+')')||null;
}

parseParams = function(url) {
   var params=url;
   if (url.match(/\?(.+)$/))
       params = RegExp.$1;
	// split the params
	var pArray = params.split("&");
	// hash to store result
	var pHash = {};
	// parse each param in the array and put it in the hash
	for(var i=0;i<pArray.length;i++) {
		var temp = pArray[i].split("=");
		pHash[temp[0]] = unescape(temp[1]);
	}
	return pHash;
}


$('document').ready(function() {
	bindResourceDownloadClick();
	bindResourceMemberSearch();
	bindResourceMemberAddRemove();
	bindResourceMemberClick();
	bindResourceRemove();
});
