var ccm = {
	assetDuration : 15,
	dateFormat : 'mm/dd/y',
	networkEvents : [],
	campaignTip : {
		delay:250,
		track:true,
		showURL:false,
		bodyHandler:function(){
			var img = $(this).find('img');
			var parent = $(this).parent();
			var mediaURL = img.hasClass('asset') ? '/media/asset/'+img.attr('alt') : '/media/campaign/'+img.attr('alt');
			var tipHTML;
			
			switch(parent.find('.assetType').html()){										
				case 'avi':
				case 'flv':
				case 'mov':
				case 'mp4':
				case 'mpg':
				case 'mpeg':
				case 'wmv':
					var h = 180;
					var w = 320;
					var flashvars = [
						'file='+mediaURL,
						'height='+h,
						'width='+w,
						'autostart=true',
						'type=video',
						'controlbar=none',
						'icons=false'
					];
					tipHTML = ccm.createHTML({
						tag : 'object',
						type : 'application/x-shockwave-flash',
						data : '/_assets/swf/player.swf',
						height : h,
						width : w,
						children : [
							{ tag: 'param', name: 'movie', value: '/_assets/swf/player.swf' },
							{ tag: 'param', name: 'flashvars', value: flashvars.join('&amp;') },
							{ tag: 'param', name: 'allowfullscreen', value: 'false' },
							{ tag: 'param', name: 'wmode', value: 'transparent' }
						]
					});
					break;	
										
				default:
					var d = new Date();
					tipHTML = ccm.createHTML({
						tag : 'img',
						src : mediaURL+'/medium?'+d.getTime()
					});
					break;
			}
			
			var tip = '<div class="assetTip ui-corner-all">';
			tip += '<div class="preview">'+tipHTML+'</div>';
			if(parent.find('.assetName').length) 		tip += '<h3>'+parent.find('.assetName').html()+'</h3>';
			if(parent.find('.assetDescription').length)	tip += '<p>'+parent.find('.assetDescription').html()+'</p>';
			if(parent.find('.assetDuration').length)	tip += '<p>Duration: '+parent.find('.assetDuration').html()+'</p>';
			tip += '</div>';
			return tip;
		}
	},
	
	eventTip : {
		delay:250,
		track:true,
		showURL:false,
		bodyHandler:function(){
			eventIndexes = $(this).attr('rel').split(',');
			var html = '';
			$.each(eventIndexes,function(i,d){
				html += ccm.getEventSummary(ccm.networkEvents[d]);
			});
			return html;
		}
	},
			
	getAssetPreview : function(asset){
		var description = asset.assetDescription ? asset.assetDescription : 'No description available.';
		var duration = asset.campaignDuration ? parseInt(asset.campaignDuration) : asset.assetDuration ? parseInt(asset.assetDuration) : asset.networkAssetDuration ? parseInt(asset.networkAssetDuration) : ccm.assetDuration;
		return '<div class="preview"><img src="/media/asset/'+asset.assetKey+'/thumb" alt="'+asset.assetKey+'" class="asset" /></div><div class="assetID">'+asset.assetID+'</div><div class="assetKey">'+asset.assetKey+'</div><div class="assetType">'+asset.assetType+'</div><div class="assetName">'+asset.assetName+'</div><div class="assetDescription">'+description+'</div><div class="assetDuration">'+ccm.sec2hms(duration)+'</div><div class="edit ui-corner-bl ui-corner-br"><a href="javascript:void(0);" rel="'+asset.assetID+'">edit</a></div>';
	},
	
	getCampaignPreview : function(campaign){
		var description = campaign.assetDescription ? campaign.assetDescription : 'No description available.';
		var duration = campaign.campaignDuration ? parseInt(campaign.campaignDuration) : campaign.assetDuration ? parseInt(campaign.assetDuration) : campaign.networkAssetDuration ? parseInt(campaign.networkAssetDuration) : ccm.assetDuration;
		return '<div class="preview"><img src="/media/campaign/'+campaign.campaignKey+'/thumb" alt="'+campaign.campaignKey+'" class="campaign" /></div><div class="assetID">'+campaign.assetID+'</div><div class="assetKey">'+campaign.assetKey+'</div><div class="assetType">'+campaign.assetType+'</div><div class="assetName">'+campaign.assetName+'</div><div class="assetDescription">'+description+'</div><div class="assetDuration">'+ccm.sec2hms(duration)+'</div>';
	},
	
	getEventSummary : function(event){
		var startD = ccm.formatMysqlTimestamp(event.eventDateStart,ccm.dateFormat);
		var stopD = ccm.formatMysqlTimestamp(event.eventDateStop,ccm.dateFormat);
		var showD = startD == stopD ? startD : startD+' - '+stopD;
		return '<div class="eventTip ui-corner-all">'+event.eventName+'<br />'+showD+'</div>';
	},
	
	createHTML : function (obj){
		var html = '<' + obj.tag;
		for(var attr in obj){
			if(attr == 'tag' || attr == 'html' || attr == 'children') continue;
			if(attr == 'cls'){
				html += ' class="' + obj['cls'] + '"';
			}else{
				html += ' ' + attr + '="' + obj[attr] + '"';
			}
		}
		if(obj.tag == undefined || obj.tag == ''){
			html += '/>\n';
		}else{
			html += '>\n';
			var cn = obj.children;
			if(cn){
				for(var i = 0, len = cn.length; i < len; ++i){
					html += ccm.createHTML(cn[i]);
				}
			}
			if(obj.html) html += obj.html;
			html += '</' + obj.tag + '>\n';
		}
		return html;
	},
	
	mysqlTimestampToDate : function(dateText){
		return new Date(dateText.substr(0,10).replace(/-/g,'/'));
	},
	
	formatMysqlTimestamp : function(dateText,format){
		return $.datepicker.formatDate(format,ccm.mysqlTimestampToDate(dateText));
	},
	
	sec2hms : function(sec){
		var hms = '';
		hours = parseInt(sec/3600); 
		if(hours > 0) hms += hours > 1 ? hours+' hours, ' : '1 hour, ';
		minutes = parseInt((sec / 60) % 60); 
		hms += minutes == 1 ? '1 minute, ' : hours == 0 && minutes == 0 ? '' : minutes+' minutes, ';
		seconds = parseInt(sec % 60); 
		hms += seconds == 1 ? '1 second' : seconds+' seconds';
		return hms;
	},
	
	formatNumber : function(num){
		num += '';
		x = num.split('.');
		x1 = x[0];
		x2 = x.length > 1 ? '.' + x[1] : '';
		var rgx = /(\d+)(\d{3})/;
		while (rgx.test(x1)) {
			x1 = x1.replace(rgx, '$1' + ',' + '$2');
		}
		return x1 + x2;
	}

}
