function ajaxResponse(js){jsonResponse(js); }
function ajaxForm(obj, upd){ formSend(obj,upd); }

function ajaxURL(obj){	
	var tmp = obj.toString().split('/');
	var l = tmp.length;
	var call = tmp[l-1];
	var tmp2 = call.split('?');
	var cmd = tmp2[0];
	if (tmp2[1]) {
		var tmp3 = tmp2[1].split('&');
		var vars = "'"+tmp3.join("','")+"'";
	} else {
		var vars = '';
	}
	eval(cmd+'('+vars+');');
}

function hidePopup(){
	tb_remove();
	$('#tb_popup').hide();
}

function fillShipping(bool, id){
	$('#'+id+'_bb').find(':input').each(function(i){
		var nm = $(this).attr('name');
		var newnm = nm.replace('Mail', 'Ship');
		var val = bool ? $(this).val() : '';
		$('#'+newnm).val(val);
	});
}

function formSend(obj){
	var url = $(obj).attr('action');
	var fid = $(obj).attr('id');
	try{
		$('#'+fid+'_ajax').val(1);
		$('#'+fid+'_response').html('');
		$('#'+fid+'_message').html('');
	} catch (ex){
		
	}
	
	$('.inputerror').removeClass('inputerror');	
	
	var vars = $(obj).serialize();
	vars += '&formid='+fid;
	$.post(url, vars, ajaxResponse, 'json');	
}

function formPrep(obj){
	var url = $(obj).attr('action');
	var fid = $(obj).attr('id');
	try{
		$('#'+fid+'_ajax').val(1);
		$('#'+fid+'_response').html('');
		$('#'+fid+'_message').html('');
	} catch (ex){
		
	}
	
	$('.inputerror').removeClass('inputerror');	
	
	var vars = $(obj).serialize();
	vars += '&formid='+fid;
	var ret = {};
	ret.url = url;
	ret.vars = vars;
	return ret;
}

function setFormStep(fid,cs){
	var frm = $("#"+fid);
	var fid = $(frm).attr('id');	
	$(frm).find('li.active').removeClass('active');	
	$('#'+fid+'_tab_'+cs).addClass('active');
	$('#'+fid+'_cur_step').val(cs);	
}

function nextFormStep(obj){
	var frm = $(obj).closest('form');
	var fid = $(frm).attr('id');
	
	var cs = Number($('#'+fid+'_cur_step').val());	
	ret = formPrep(frm);	
	$.post(ret.url, ret.vars, function(obj){ if (obj.success) { swapPanel(fid,cs,'current')} jsonResponse(obj); },'json');	
}

function swapPanel(fid,to,from){
	//$('#'+fid+'_panel_'+to).html($('#'+fid+'_panel_'+from).html());
	if ($('#'+fid+'_panel_'+to).is(':empty')){	
		//alert($('#'+fid+'_panel_'+from).html());
		$('#'+fid+'_panel_'+to).empty().append($('#'+fid+'_panel_'+from+' div.formcontent')).hide();
	} else {
		//alert($('#'+fid+'_panel_'+to).html());
		$('#'+fid+'_panel_'+to).hide();
	}
}

function prevFormStep(obj){
	var frm = $(obj).closest('form');
	var fid = $(frm).attr('id');
	var cs = $('#'+fid+'_cur_step').val();
	
	
	//move current	
	//$('#'+fid+'_panel_'+cs).append($('#'+fid+'_panel_current').html());
	$('#'+fid+'_panel_'+cs).hide();	
	
	var ncs = cs-1;		
	$('#'+fid+'_panel_'+ncs).show();
	$('#'+fid+'_panel_current').hide();
	$('#'+fid+'_cur_step').val(ncs);	
	setFormStep(fid, ncs);
}

function jsonResponse(obj){	
	if (obj.update) AR_update(obj.update);
	if (obj.css) AR_css(obj.css);
	if (obj.attr) AR_attr(obj.attr);	
	if (obj.append) AR_append(obj.append);
	if (obj.remove) AR_remove(obj.remove);
	if (obj.errorFields) AR_errorFields(obj.errorFields);
	if (obj.eval) AR_eval(obj.eval);
}

function jsonURL(obj){
	var vars = new Object();
	var url = obj.toString();
	$.post(url, vars, ajaxResponse, 'json');
}


function AR_remove(arr){
	for(i in arr) {
		var itm = arr[i];
		$('#'+itm.id).remove();
	}
}

function AR_css(arr){
	for(i in arr) {
		var itm = arr[i];
		if ($('#'+itm.id)){
			$('#'+itm.id).css(itm.k, itm.v);
		}
	}
}

function AR_attr(arr){	
	for(i in arr) {
		var itm = arr[i];
		$(itm.sel).attr(itm.k, itm.v);
	}
}

function AR_append(arr){
	for(i in arr) {
		var itm = arr[i];
		switch(itm.type){
			case 'append':
				$('#'+itm.parent).append(itm.child);
			break;
			case 'after':
				$('#'+itm.parent).after(itm.child);
			break;
		}
	}
}

function AR_update(arr){
	for(i in arr) {
		var itm = arr[i];		
		if (!$('#'+itm.id).attr('id')){				
			$('#'+itm.parent).append('<div id="'+itm.id+'"></div>');				
		}
		$('#'+itm.id).html(itm.html);
		if (!itm.noshow) $('#'+itm.id).css('display', 'block');
		if (itm.fade) $('#'+itm.id).fadeOut(4000);
	}
}

function AR_errorFields(arr){	
	for(i in arr.list) {
		var itm = arr.list[i];		
		$('#'+itm).addClass('inputerror');
		$('#lbl_'+itm).addClass('inputerror');
		if ($('#'+itm).attr('type') == 'radio'){			
			$('input[name='+itm+']').parent().addClass('inputerror');
		}
	}
}

function AR_eval(arr){
	for(i in arr) {
		var itm = arr[i];		
		eval(itm+';');
	}
}