
var ffunction=ffunction||{}
var self=ffunction
ffunction.ASYNC_CHANNEL=new channels.SyncChannel()
ffunction.Spotlight=extend.Class({name:'ffunction.Spotlight',parent:undefined,shared:{SELECTOR:'#Spotlight'},properties:{ui:undefined,uis:undefined,data:undefined,illustrations:undefined,currentIllustration:undefined,hasMouseOver:undefined,isRunning:undefined,firstRun:undefined},initialize:function(data){var self=this
if(typeof(self.uis)=='undefined'){self.uis={'illustrations':undefined,'datasheet':undefined,'illustrationTmpl':undefined,'datasheetTmpl':undefined,'iterator':undefined}};if(typeof(self.illustrations)=='undefined'){self.illustrations=[]};if(typeof(self.currentIllustration)=='undefined'){self.currentIllustration=-1};if(typeof(self.hasMouseOver)=='undefined'){self.hasMouseOver=false};if(typeof(self.isRunning)=='undefined'){self.isRunning=true};if(typeof(self.firstRun)=='undefined'){self.firstRun=true};self.ui=$(self.getClass().SELECTOR);self.uis.illustrations=$('.illustrations',self.ui);self.uis.datasheet=$('.DataSheet',self.ui);self.uis.illustrationTmpl=$('.Illustration.TEMPLATE',self.ui);self.uis.datasheetTmpl=$('.DataSheet.TEMPLATE',self.ui);self.uis.iterator=$('.Iterator',self.ui);self.setData(data)
$(document).mousemove(function(e){var offset=self.ui.offset();var w=self.ui.width();var h=self.ui.height();var in_x=((e.pageX>=offset.left)&&(e.pageX<=(offset.left+w)));var in_y=((e.pageY>=offset.top)&&(e.pageY<=(offset.top+h)));self.hasMouseOver=(in_x&&in_y);})
self.nextIllustration()
window.setTimeout(function(){self.run()},(1000*7))},methods:{run:function(){var self=this
self.isRunning=true;self._runIteration()},_runIteration:function(){var self=this
if(self.isRunning)
{if((!self.hasMouseOver))
{self.nextIllustration()
window.setTimeout(function(){self._runIteration()},(1000*4))}
else if(true)
{window.setTimeout(function(){self._runIteration()},(1000*2.0))}}},nextIllustration:function(){var self=this
self.showIllustration(((self.currentIllustration+1)%self.illustrations.length))},showIllustration:function(index){var self=this
var current_ui=$('.current',self.uis.illustrations);self.currentIllustration=(index%self.illustrations.length);var iui=$($('.Illustration.actual',self.uis.illustrations)[self.currentIllustration]);var illustration=self.illustrations[self.currentIllustration];extend.iterate(['type','client','year','period','title'],function(k){var field=$(('.out-'+k),self.ui);if((field.length>0))
{field.html(illustration[k])}},self)
if(illustration.link)
{$('.out-link',self.ui).attr('href',illustration.link).removeClass('hidden')}
else if(true)
{$('.out-link',self.ui).addClass('hidden')}
if(illustration.parent)
{$('a.out-parent',self.ui).removeClass('hidden').attr('href',illustration.parent.href).html(illustration.parent.title)}
else if(true)
{$('a.out-parent',self.ui).addClass('hidden')}
if(illustration.next)
{$('a.out-next',self.ui).removeClass('hidden').attr('href',illustration.next.href).html(illustration.next.title)}
else if(true)
{$('a.out-next',self.ui).addClass('hidden')}
Cufon.replace('#Spotlight .cufon-dr',{'fontFamily':'DIN-Regular'})
Cufon.replace('#Spotlight .cufon-ts',{'fontFamily':'TStar'})
Cufon.replace('#Spotlight .cufon-ol',{'fontFamily':'Olsen-Light'})
Cufon.replace('#Spotlight .cufon-or',{'fontFamily':'Olsen-Light'})
var left_offset=(self.currentIllustration*iui.width());if($.browser.msie)
{if(($.browser.version=='7.0'))
{if(self.firstRun)
{self.uis.illustrations.css('left',-900)}
left_offset=(left_offset+900);}}
self.uis.illustrations.animate({'left':(0-left_offset)},1000,'swing')
self.firstRun=false;var iterator_li=self.uis.iterator.find('li.actual');iterator_li.removeClass('current')
$(iterator_li[self.currentIllustration]).addClass('current')},setData:function(data){var self=this
self.data=data;self.illustrations=[];$('.actual',self.ui).remove()
extend.iterate(data,function(i){self._addIllustration(i)},self)},_addIllustration:function(illustration){var self=this
var iui=self.uis.illustrationTmpl.clone().removeClass('TEMPLATE').removeClass('hidden').addClass('actual');var page=self.illustrations.length;$(iui).attr({'page':(''+page)})
$('img',iui).attr({'title':illustration.title,'src':('/lib/images/'+illustration.image)})
if(illustration.feature)
{$('.out-feature',iui).html(illustration.feature)
$('.out-featureTitle',iui).html(illustration.featureTitle)
var f_ui=$('.Features',iui);$('.body',f_ui).hover(function(){f_ui.animate({'opacity':0.05})},function(){f_ui.animate({'opacity':1.0})})}
else if(true)
{$('.Features',iui).remove()}
ill_selector=html.li({'page':(''+page),'class':'actual'});$(self.uis.iterator).append(ill_selector)
$(ill_selector).click(function(){if((self.currentIllustration==page))
{if((!self.isRunning))
{self.run()}}
else if(true)
{self.isRunning=false;self.showIllustration(page)}})
self.uis.illustrations.append(iui)
self.illustrations.push(illustration)
return iui}}})
ffunction.ContactForm=extend.Class({name:'ffunction.ContactForm',parent:undefined,properties:{ui:undefined},initialize:function(){var self=this
self.ui=$('#ContactForm');$('form',self.ui).submit(function(){alert('SUBMIT')
if(self.validateForm())
{self.sendEmail()}
return false})
$('button.submit',self.ui).click(function(){if(self.validateForm())
{self.sendEmail()}
return false})
$('.do-reset',self.ui).click(function(){self.reset()})
$('.w-field .value',self.ui).change(function(){self.validateField(this)
return true})
if((window.location.hash=='#contact'))
{var field=self.ui.find('input.text.value:first');window.setTimeout(function(){field.select().focus()},1500)}},methods:{validateField:function(field){var self=this
var f=$(field);if((f.attr('name')=='company'))
{return true}
else if((!$.trim(f.val())))
{f.addClass('has-error')
return false}
else if(true)
{f.removeClass('has-error')
return true}},validateForm:function(){var self=this
var valid=true;extend.iterate($('.w-field .value',self.ui),function(field){if((!self.validateField(field)))
{valid=false;}},self)
self.ui.find('.when-error').addClass('hidden')
self.ui.find('.when-sent').addClass('hidden')
return valid},getFormData:function(){var self=this
var result={};extend.iterate($('.w-field .value',self.ui),function(field){var f=$(field);result[f.attr('name')]=f.val();},self)
return result},sendEmail:function(){var self=this
ffunction.ASYNC_CHANNEL.post('/api/contact',self.getFormData()).onSucceed(function(){$.scrollTo($('#ContactForm .when-sent').removeClass('hidden').fadeIn())}).onFail(function(){$.scrollTo($('#ContactForm .when-error').removeClass('hidden').fadeIn())})},reset:function(){var self=this
$('#ContactForm .when-sent').addClass('hidden')
$('#ContactForm .when-error').addClass('hidden')}}})
ffunction.NewsletterForm=extend.Class({name:'ffunction.NewsletterForm',parent:undefined,properties:{ui:undefined},initialize:function(){var self=this
self.ui=$('#NewsletterForm');$('form',self.ui).submit(function(){if(self.validateForm())
{self.subscribe()}
return false})
$('button.submit',self.ui).click(function(){if(self.validateForm())
{self.subscribe()}
return false})
$('input.email',self.ui).change(function(){self.validateField(this)
return true})},methods:{validateField:function(field){var self=this
var f=$(field);if((f.attr('name')=='email'))
{var value=$.trim(f.val());var result=false;result=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);return result}
else if(true)
{return false}},validateForm:function(){var self=this
var valid=true;extend.iterate(self.ui.find('input[type=text]'),function(field){if((!self.validateField(field)))
{$(field).addClass('has-error')
valid=false;}
else if(true)
{$(field).removeClass('has-error')}},self)
return valid},getFormData:function(){var self=this
var result={};extend.iterate($('input[type=text]',self.ui),function(field){var f=$(field);result[f.attr('name')]=f.val();},self)
return result},subscribe:function(){var self=this
ffunction.ASYNC_CHANNEL.post('/api/subscribe',self.getFormData().email).onSucceed(function(v){if((v===true))
{self.ui.find('.when-error').addClass('hidden')
self.ui.find('.when-not_success').addClass('hidden')
self.ui.find('.when-success').removeClass('hidden')}
else if(true)
{self.ui.find('.when-error').removeClass('hidden')
self.ui.find('.when-success').addClass('hidden')
self.ui.find('.when-not_success').removeClass('hidden')}}).onFail(function(){self.ui.find('.when-error').removeClass('hidden')
self.ui.find('.when-success').addClass('hidden')
self.ui.find('.when-not_success').removeClass('hidden')})
return false},reset:function(){var self=this
self.ui.find('.when-error').addClass('hidden')
self.ui.find('.when-success').addClass('hidden')
self.ui.find('.when-not_success').removeClass('hidden')}}})
ffunction.init=function(){var self=ffunction;}
if(typeof(ffunction.init)!="undefined"){ffunction.init();}
