function preloader (obj, file, w, h) {
	if (w == undefined || w == '') { var w = $(obj).width() }
	if (h == undefined || h == '') { var h = $(obj).height() }
	var pi = {}, path = '/img/'
	if (w > 250) { 
		pi.w = 93
		pi.h = 62
		pi.f = path + 'dig-loading-l.gif'
	} else {
		pi.w = 44
		pi.h = 44
		pi.f = path + 'dig-loading-s.gif'
	}
	var x = Math.floor((w - pi.w) / 2), y = Math.floor((h - pi.h) / 2),	increment = 700, time = increment
	$(obj).prepend('<div class="preloader"></div>')
	$(obj).children('.preloader').css({'display':'none', 'position':'absolute', 'width':w+'px', 'height':h+'px', 'z-index':'1000', 'background':'#fff url(' + pi.f + ') no-repeat ' + x + 'px ' + y + 'px'})
	$(obj).children('.preloader').css({'display':'none', 'position':'absolute', 'width':w+'px', 'height':h+'px', 'z-index':'1000', 'background':'#fff url(' + pi.f + ') no-repeat ' + x + 'px ' + y + 'px'})
	$(obj).children('.preloader').fadeIn(0)
	var fn = file;
	if (file == '') { file = '/img/blank.gif' } 
	LoadImageII(file, function(){ 
		$(obj).children('.preloader').delay(500).fadeOut(time, function(){ 
			$(obj).children('.preloader').remove()
		})
	})
}

function getIeVersion() { //returns the version of Internet Explorer or a -1 (indicating the use of another browser) 
  var rv = -1; //return value assumes failure
  if (navigator.appName == 'Microsoft Internet Explorer') {
    var ua = navigator.userAgent, re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null) { rv = parseFloat( RegExp.$1 ) }
  }
  return rv
}

function trimAllSpaces (str){
	str = str.toString()
	str = str.replace(/\t{2,}/g, '\t')
	str = str.replace(/\n{3,}/g, '\n')
	str = str.replace(/\r{3,}/g, '\r')
	str = str.replace(/[ ]{2,}/g, ' ')
	str = str.replace(/^\s+|\s+$/g, '')
	return str
}			
function specialChars (str) {
	var reg = /[^a-z\s\.]/gi		
	if ( str.search(reg) > -1 ) { return true } else { return false }
}
function validEmail (str) {
	 var reg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/gi
	 if ( str.search(reg) > -1 ) { return true } else { return false }
}
function illegalChars (str) {
	var reg = /[^a-zA-Z0-9"\"'",\s\.\!\?\-]/gi		
	if ( str.search(reg) > -1 ) { return true } else { return false }
}

function objectToString(o){
	var parse = function(_o){
        var a = [], t;
        for(var p in _o){
            if(_o.hasOwnProperty(p)){
                t = _o[p];
                if(t && typeof t == "object"){
                    a[a.length]= p + ":{ " + arguments.callee(t).join(", ") + "}";
                }
                else {
                    if(typeof t == "string"){
                        a[a.length] = [ p+ ": \"" + t.toString() + "\"" ];
                    }
                    else{
                        a[a.length] = [ p+ ": " + t.toString()];
                    }
                }
            }
        }
        return a;
    }
    return "{" + parse(o).join(", ") + "}";
}

function LoadImageII(src, f) {
	if ( src != '' ) { 
		var img = document.createElement('img')
		img.onload = function () { if (typeof f == 'function') { f() } }
		img.src = src
	}
}

var playSlogan = function (i) {
	var slgnCount = $('#slogan').children('div').length, i = (i == undefined) ? 1 : i, obj = $('#slogan').children('div:nth-child(' + i + ')')
	$(obj).delay(500).show('fade', 1500, function(){
		$(obj).delay(4000).hide('fade', 1500, function(){ 
			if ( i == slgnCount ) { i = 1 } else { i = i + 1 }; playSlogan(i)
		})
	})	
}

function csZoomData (e) {
	stage.offset = $('#stage').offset()
	mouse.x = e.pageX
	mouse.y = e.pageY
	mouse.xRel = mouse.x - stage.offset.left
	mouse.yRel = mouse.y - stage.offset.top
					
	if (mouse.yRel <= focusBox.middle) { focusBox.y = stage.offset.top 
	} else if ( mouse.y >= ( stage.offset.top + stage.height ) - focusBox.middle ) { focusBox.y = (stage.offset.top + stage.height) - (focusBox.height + 2) 
	} else { focusBox.y = mouse.y - focusBox.middle }
	
	if (mouse.xRel <= focusBox.center) { focusBox.x = stage.offset.left
	} else if ( mouse.x >= ( stage.offset.left + stage.width ) - (focusBox.center + 1) ) { focusBox.x = (stage.offset.left + stage.width) - (focusBox.width + 2) 
	} else { focusBox.x = mouse.x - focusBox.center }
	
	zoom.beforeL = Math.ceil(((focusBox.x - stage.offset.left) / stage.width) * zoom.width)
	zoom.beforeT = Math.ceil(((focusBox.y - stage.offset.top) / stage.height) * zoom.height)
	zoom.afterL = Math.floor(zoom.beforeL + (zoom.divWidth * .5))
	zoom.afterT = zoom.beforeT
}

function cgiZoomData (e) {
	stage.offset = $('#stage').offset()
	mouse.x = e.pageX
	mouse.y = e.pageY
	mouse.xRel = mouse.x - stage.offset.left
	mouse.yRel = mouse.y - stage.offset.top
					
	if (mouse.yRel <= focusBox.middle) { focusBox.y = stage.offset.top 
	} else if ( mouse.y >= ( stage.offset.top + stage.height ) - focusBox.middle ) { focusBox.y = (stage.offset.top + stage.height) - (focusBox.height + 2) 
	} else { focusBox.y = mouse.y - focusBox.middle }
	
	if (mouse.xRel <= focusBox.center) { focusBox.x = stage.offset.left
	} else if ( mouse.x >= ( stage.offset.left + stage.width ) - (focusBox.center + 1) ) { focusBox.x = (stage.offset.left + stage.width) - (focusBox.width + 2) 
	} else { focusBox.x = mouse.x - focusBox.center }
	
	zoom.L = Math.ceil(((focusBox.x - stage.offset.left) / stage.width) * zoom.width)
	zoom.T = Math.ceil(((focusBox.y - stage.offset.top) / stage.height) * zoom.height)
}

function showBefore (gallery) {
	if ( $(gallery).hasClass('hover') ) {
		var label = $(gallery).children('label')
		if ( $(gallery).children('.bfr').length == 0 ) { 
			$(gallery).append('<div class="showBefore"><ul><li><p>View before</p></li></ul></div>')
			$('.showBefore').css({'display':'block'})
			var src = $(gallery).children('img').attr('src')
			$(label).after('<img class="bfr" src="' + src.replace(/a.jpg$/i, 'b.jpg') + '">')
			$(gallery).children('.bfr').css({'display':'none', 'margin-left':'-' + adjustBfrMargin(src) + 'px'})
		}
		$('.showBefore li').hover(
			function(){ adjustBfrSrc(gallery); $($(gallery).find('.bfr')).stop(true, true).fadeIn() },
			function(){	$($(gallery).find('.bfr')).stop(true, true).fadeOut() }
		)
	}
}

function adjustBfrSrc (gallery) {
	var bfrSrc = $(gallery).children('.bfr').attr('src')
	if ( bfrSrc.search('blank.gif') ) {
		var src = $(gallery).children('img').not('.bfr').attr('src')
		$(gallery).children('.bfr').attr('src', src.replace(/a.jpg$/i, 'b.jpg')).css({'margin-left':'-' + adjustBfrMargin(src) + 'px'})
	}
}

function adjustBfrMargin (src) {
	img = new Image()
	img.src = src
	leftMargin = Math.ceil(img.width / 2) + 1
	return leftMargin
}

function showNext (obj) {
	var next = $(obj).next()
	if ( $(next).children('img').not('.bfr').attr('src') == undefined ) { next = $('#gallery > div').first() }
	$('#gallery').css({'min-height':'600px'})
	$('#galleryNext, #galleryPrev').fadeOut(10, function(){
		$(obj).fadeOut(100, function(){ 
			showBefore(next)
			if ( $(next).children('img').not('.bfr').hasClass('loading-l') ) { loadGalleryImage($(next).children('img').not('.bfr')) }
			$(next).css({'display':'block'})
			$(next).fadeIn(100, function(){
				$('#galleryNext, #galleryPrev').fadeIn(100)
				$('#gallery').css({'min-height':''})
			})
		})
	})
}
function showPrev (obj) {
	var prev = $(obj).prev()
	if ( $(prev).children('img').not('.bfr').attr('src') == undefined ) { prev = $('#gallery > div').last() }
	$('#gallery').css({'min-height':'600px'})
	$('#galleryNext, #galleryPrev').fadeOut(10, function(){
		$(obj).fadeOut(100, function(){ 
			showBefore(prev)
			if ( $(prev).children('img').not('.bfr').hasClass('loading-l') ) { loadGalleryImage($(prev).children('img').not('.bfr')) }
			$(prev).css({'display':'block'})
			$(prev).fadeIn(100, function(){
				$('#galleryNext, #galleryPrev').fadeIn(100)
				$('#gallery').css({'min-height':''})
			}) 
		})
	})
}

function activeGallery () {
	var gallery = ''
	$('#gallery > div').each(function(i, obj){
		if ( $(obj).css('display') != 'none' ) { gallery = $(obj) }
	})
	return gallery
}

function loadCarouselImages (f) {
	$('#ourwork #carousel .preload img').each(function(i, obj){
		$(obj).fadeOut()
		$(obj).closest('.preload').addClass('loading-l')
		LoadImageII('/img/ow/' + $(obj).attr('alt') + 'c.jpg', function(){
			$(obj).attr('src', '/img/ow/' + $(obj).attr('alt') + 'c.jpg').delay(100).fadeIn(500, function(){
				$(obj).closest('.preload').removeClass('loading-l')
				if ( (i + 1) == $('#ourwork #carousel .preload img').length && typeof f == 'function' ) { f() }
			})
		})
	})
}

function loadGalleryImages () {
	$('#ourwork #gallery .preload img').not('.bfr').each(function(i, obj){
		$(obj).animate({width:'900px', height:'600px'}, 1).addClass('loading-l')
		loadGalleryImage($(obj))
	})
}

function loadGalleryImage (obj) {
	LoadImageII('/img/ow/' + $(obj).closest('.preload').attr('id') + 'a.jpg', function(){
		var img = new Image(), src = '/img/ow/' + $(obj).closest('.preload').attr('id') + 'a.jpg'
		img.src = src
		$(obj).animate({width:img.width + 'px', height:img.height + 'px'}, 500, function(){
			$(obj).attr('src', src).removeClass('loading-l')
		})
	})
}
