(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.datepicker('destroy').attr('id','').datepicker({'dateFormat':'dd-M-yy','changeYear':true});} 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;});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);