(function($){if(!$.fn.c1){$.fn.c1=function(name,options){if(this.c1[name])
return this.c1[name].call(this,options);return this;}}
$.fn.c1.form=function(options){var t=$(this);options=$.extend({'clean':'','cleantype':'default','cleanmap':{},'placeholder':'input[title], textarea[title], input[placeholder], textarea[placeholder]'},options);var field_filter=':not(:checkbox, :radio)';if(options['default'])
options.placeholder=options['default'];if(options.cleantype=='default'){options.cleanmap={'[\u2018\u2019]':'\'','[\u201C\u201D]':'"','[\u2026]':'...'};}else if(options.cleantype=='sms'){options.cleanmap={'[\u2018\u2019]':'\'','[\u201C\u201D]':'"','[\u2026]':'...','[^a-zA-Z0-9 !@#$%&*()\\-_+=:;\'",<.>/?]':'?'};}
function clean(){var val=$(this).val();$.each(options.cleanmap,function(regex){val=val.replace(new RegExp(regex,'g'),this);});$(this).val(val).change();}
if(options.clean){$(options.clean,this).filter(field_filter).blur(clean).each(function(){submit=true;return false;});}
var submit=false;if(options.placeholder){$(options.placeholder,this).filter(field_filter).each(function(){if($(this).attr('placeholder')==''){$(this).attr('placeholder',$(this).attr('title'));if($(this).val()==$(this).attr('placeholder')||$(this).val()==$(this).attr('title'))
$(this).val('');}});if(!('placeholder'in document.createElement('input'))){options.removePlaceholder=true;$(options.placeholder,this).filter(field_filter).focus(function(){if($(this).is('select'))
$(this).removeClass('empty');else if($(this).val()==$(this).attr('placeholder'))
$(this).removeClass('empty').val($(this).hasClass('use-title')?$(this).attr('placeholder'):'');}).blur(function(){if($(this).is('select')&&$(this).val()=='')
$(this).addClass('empty');else if($(this).val()==''||$(this).val()==$(this).attr('placeholder'))
$(this).addClass('empty').val($(this).attr('placeholder'));}).change(function(){$(this)[$(this).val()==$(this).attr('placeholder')?'addClass':'removeClass']('empty');}).each(function(){submit=true;$(this).blur();});}}
if(options.dependencies){var t=$(this);function getField(name,checked){return t.find('input[type="text"][name="'+name+'"], input[type="text"][name^="'+name+'["], '+'input[type="radio"][name^="'+name+'"]'+(checked?':checked':'')+', '+'input[type="checkbox"][name^="'+name+'"]'+(checked?':checked':'')+', '+'select[name="'+name+'"], select[name^="'+name+'["], '+'textarea[name="'+name+'"], textarea[name^="'+name+'["]');}
function getFieldValue(name,checked){if(options.values&&options.values[name])
return options.values[name];return getField(name,checked).val();}
function getFieldName(name){var bits=name.split(' ');return bits[0];}
function getFieldOperator(name){var bits=name.split(' ');return bits.length==1?'=':bits[1];}
function isVisible(config){if(config[0]){var show=false;$.each(config,function(n,values){if(isVisible(values)){show=true;return false;}});return show;}
var show=true;$.each(config,function(n,values){var value=getFieldValue(getFieldName(n),true);var operator=getFieldOperator(n);if(operator=='='&&$.inArray(value,values)<0||operator=='!='&&(value==null||$.inArray(value,values)>=0)){show=false;return false;}});return show;}
function refresh(){$.each(options.dependencies,function(name,config){var prefix=name.substr(0,1);var el=(prefix==='#'||prefix==='.')?t.find(name):getField(name).closest('.field');el[isVisible(config)?'show':'hide']();});}
var fields={};function initDependency(name,config){$.each(config,function(field,values){var field_name=getFieldName(field);if(fields[field_name]!=true){fields[field_name]=true;getField(field_name).change(function(){refresh();});}});}
$.each(options.dependencies,function(name,config){if(config[0]){$.each(config,function(n,values){initDependency(name,values);});}else{initDependency(name,config);}});refresh();}
if(submit){var form=$(this).is('form')?$(this):$(this).closest('form');form.submit(function(){if(options.removePlaceholder){$(options.placeholder,this).filter(field_filter).each(function(){if($(this).val()==$(this).attr('title'))
$(this).val('');});}
if(options.convert)
$(options.convert,this).each(convert);});}
return this;}
$.fn.c1.country=function(options){var t=$(this);if(options==null)
options={};options=$.extend({'country':'select[name="country"]','state':'input[name="state"], select[name="state"]'},options);var field=t.find(options.country).change(function(){var code=$(this).val();$.fn.c1.country.load(code,function(country,details){if(code!=country)
return;var existing=t.find(options.state);var field=$('');field.attr('name',existing.attr('name'));$.each(details.states,function(code,name){var option=$('').val(code).text(name);field.append(option);});if(field.find('option').length<=1&&field.find('option:first').val()=='')
field=$('').attr('name',existing.attr('name'));field.val(existing.val());existing.replaceWith(field);if(options.fields){$.each(details.required,function(k,v){if(options.fields[k])
$(options.fields[k]).closest('tr, li').find('label.label em')[v?'show':'hide']();});$.each(details.labels,function(k,v){if(options.fields[k]){var field=$(options.fields[k]).closest('tr, li').find('label.label')
var em=field.find('em');field.text(v+': ');field.append(em);}});}});}).change();return this;};$.fn.c1.country.load=function(code,callback){if($.fn.c1.country._countries[code]){callback.call(window,code,$.fn.c1.country._countries[code]);return true;}
$.c1.api({'module':'system','controller':'tools','method':'country','data':{'country':code,'blank':''},'success':function(response){$.fn.c1.country._countries[code]=response;callback.call(window,code,$.fn.c1.country._countries[code]);}});};$.fn.c1.country._countries={};$.fn.c1.grid=function(options){var t=$(this);function update(){t.find('> thead')[t.find('> tbody > tr').length>1?'show':'hide']();}
if(!options.count){options.count=$('tr').length+1;}
t.find('> tfoot button').click(function(){var template=$(this).closest('table').find('> tbody > tr.grid-template');var row=template.clone(true).removeClass('grid-template').attr('id','');row.find('input, select, textarea').each(function(){$(this).attr('name',$(this).attr('name').replace(options.name+'[-1]',options.name+'['+options.count+']'));});var dates=row.find('.ui-date');if(dates.datepicker){dates.each(function(){$(this).datepicker('destroy').attr('id','').datepicker({'dateFormat':'dd-M-yy','changeYear':true});});}
var controls=row.find('.ui-input-object');if(controls.c1browse){controls.each(function(){var t=$(this);var options=t.c1browse('cloneOptions');var field=t.find('input[type="hidden"]').clone();var parent=t.parent();var span=$('');span.append(field);t.replaceWith(span);span.c1browse(options);});}
template.before(row);options.count++;update();return false;});t.find('> tbody > tr > td > a.grid-remove').click(function(){$(this).closest('tr').remove();update();return false;});t.find('> tbody').sortable({'axis':'y','items':'> tr'});update();return this;};$.fn.c1.ranking=function(options){var t=$(this);options=$.extend({'items':'.ranking-option'});t.find(options.items).css('cursor','pointer');t.sortable({'items':options.items,'placeholder':'ranking-placeholder','start':function(event,ui){ui.item.css('cursor','move');},'stop':function(event,ui){ui.item.css('cursor','pointer');},'update':function(event,ui){var position=1;t.find(options.items).each(function(){$('select',this).val(position++);});}});return this;};$.fn.c1.suburb=function(options){var t=$(this);if(typeof options=='string'){if(options=='search')
return t.autocomplete('search');return this;}
options=$.extend({'country':'select[name="country"]','state':'input[name="state"], select[name="state"]','postcode':'input[name="postcode"]'},options);var autocomplete={'minLength':2,'source':function(request,response){var data={'term':request.term};var country=$(options.country).val();var states=[];$(options.state).find('option').each(function(){states.push($(this).val());});if(options.limitTo&&!country&&states.length==0){if(options.limitTo.country){country=options.limitTo.country;}
if(options.limitTo.states){states=options.limitTo.states;}}
if(country)
data.country=country;if(states.length>0)
data.states=states;$.c1.api({'module':'system','controller':'tools','method':'suburb','data':data,'success':function(data){if(data.length==0&&options.empty)
data=options.empty;response(data);}});},'select':function(event,ui){if(ui.item){var form=t.closest('form');var postcode=form.find(options.postcode).val(ui.item.postcode);var country=form.find(options.country).val(ui.item.country);var state=form.find(options.state).val(ui.item.state);if(state.val()!=ui.item.state)
state.append($('').text(ui.item.state).val(ui.item.state)).val(ui.item.state);postcode.change();country.change();if(options.value){ui.item.value=options.value;$.each(ui.item,function(name,value){ui.item.value=ui.item.value.replace(name,value);});}}}};if(options.change)
autocomplete.change=options.change;t.autocomplete(autocomplete);return this;};})(jQuery);