var queueStatus=new Array("Loading media", "Preparing media for conversion queue", "Preparing media for conversion queue", "Upload is waiting in conversion queue", "Starting conversion", "Converting now", "Preparing for you to view");
function el(id){
	return document.getElementById(id);
}
function stripTags (textbody) {
	return textbody.replace(/<\/?[^>]+>/gi, '');
}

function inArray(needle, haystack) {
	var length = haystack.length;
	for(var i = 0; i < length; i++) {
		if(haystack[i] == needle) return true;
	}
	return false;
}
function clipperAction(itemid, intime, outtime){
	if(typeof shSubmit != 'undefined'  && shSubmit != null ) {
		shSubmit.setPoints(intime, outtime);
	}
}
function rotateAction(rotateAngle){
	if(typeof shSubmit != 'undefined'  && shSubmit != null ) {
		shSubmit.setRotate(rotateAngle);
	}
	if(typeof pagetrimangle != 'undefined'  && pagetrimangle != null ) {
		pagetrimangle=rotateAngle;
	}
}
function thumbAction(thumbtime){
	if(typeof shSubmit != 'undefined'  && shSubmit != null ) {
		shSubmit.setThumb(thumbtime);
	}
	if(typeof pagethumbtime != 'undefined'  && pagethumbtime != null ) {
		pagethumbtime=thumbtime;
	}
}
function set_locale(temloc){
	var url=ajax_url+"/ajax-locale.php?op=set_locale&locale="+temloc;
	$.get(url, function(html) {
		window.location.reload();
	}, "text");
}

function drawFlash(filename, plwidth, plheight, holder, bgcolor, flashvars, attributes, params){
	if(bgcolor==undefined) bgcolor="#FFFFFF";
	if(flashvars==undefined) flashvars={};
	if(params==undefined) params={"wmode":"opaque", "allowfullscreen":"true", "quality":"best", "menu":"false"};
	if(attributes==undefined) attributes={};
	attributes["bgcolor"]=bgcolor;
	var bytesize= (flashvars["bytesize"]==undefined) ? new Date().getTime() : flashvars["bytesize"];
//	flashvars["rndm"]=new Date().getTime();
	swfobject.embedSWF(url_root+filename+"?bytesize="+bytesize, holder, plwidth, plheight, "9.0.115", url_root+'/flash/expressInstall.swf', flashvars, params, attributes, function (retval){
		if(retval.success){

		}
	});
};

var quickview = function(element, params) {
	params = params || {};
	if (!$(element).hasClass('has-qtip')) {
		$(element).addClass('has-qtip');
		
		var marginAdjust = (typeof(params.marginAdjust) != 'undefined') ? params.marginAdjust : true;
		var height = params.height || 290;
		var width = params.width || 365;

		var offset = $(element).offset();
		if ($(window).width() - offset.left < width) params.left = true;
		
		var positionCornerTarget = params.left ? 'leftMiddle' : 'rightMiddle';
		if(params.cornerTarget) { positionCornerTarget = params.cornerTarget; }
		
		var positionCornerTooltip = params.left ? 'rightMiddle' : 'leftMiddle';
		if(params.tooltipTarget) { positionCornerTooltip = params.tooltipTarget; }
		
		var content = {};
		if(params.url) { content = {	url: site_url + params.url + '&fullurl=' + escape(window.full_url || '') }; } 
		else if(params.text) { content = { text: params.text }; }
		
		var qtip = $(element).qtip({
			content: content
			,show: {
				solo: true
				,when: {event: 'click'}
			}
			,hide: 'click'
			,position: {
				corner: {
					target: positionCornerTarget
					,tooltip: positionCornerTooltip
				}
			}
			,style: {
				background: '#f4f4f4'
				,border: {
					color: '#555'
					,radius: 0
					,width: 2
				}
				,color: '#5c5c5c'
				,padding: 15
				,tip: {
					corner: true
				}
				,height: height
				,width: width
			}
			,api: {
				onShow: function() {					
					var api = $(element).qtip('api');
					// Paul H -- making margin adjustment optional -
					if(marginAdjust) {
						api.elements.tooltip.css('margin-top', Math.round(height / 6));
						api.elements.tip.css('margin-top', 0 - Math.round(height / 6) - 9);
					}
					var hideQtip = function() {
						$(element).qtip('hide');
					};
					setTimeout(function() {
						$(document.body).click(hideQtip);
					}, 1);
				}
			}
		});
		$(element).click();
	}
};
function remq(t1){
	t1=t1.replace("'", "\'");
	t1=t1.replace('"', '\"');
	return t1;
}
function toggleBlock(t1){
	if(el(t1)){
		el(t1).style.display= (el(t1).style.display=="block") ? "none" : "block";
	}
}

var cgpop;
var cgpopokay=true;
function resetCgpopOkay(){
	cgpopokay=true;
}
function cgspopup(handle, url, cutoutdiv, callback, specialclass, hideshade) { // popup opening a page in a popup
	if(cgpopokay){
		cgpopokay=false;
		setTimeout("resetCgpopOkay();", 1000);
	//	if (cgpop!=undefined) cgpop.close();
	/*	var DIVtoRemove=el("cgspopupover");
		if(DIVtoRemove) DIVtoRemove.parentNode.removeChild(DIVtoRemove);
		DIVtoRemove=el("cgspopupoverhandle");
		if(DIVtoRemove) DIVtoRemove.parentNode.removeChild(DIVtoRemove);*/
		//if(typeof(handle)!="object") handle=el(handle);
	//	var handle = $(handle);
	//	var tem2=new Object();
		var useclass="overlay";
		if(specialclass!=null) useclass+=" "+specialclass;
		if(hideshade==null) useclass+=" shade";
		var overlay = $('<div class="'+useclass+'" id="cgspopupover"><div class="overlay-content"></div></div>').appendTo(document.body);
		var handle = $('<div id="cgspopupoverhandle"></div>').appendTo(document.body);
		var overlayApi = $(handle).overlay({
			api: true
			,closeOnClick: false
			,oneInstance: true
			,target: overlay
			,finish: {top: ($(window).height() > 600) ? 150 : 5 }
			,onClose: onPopupClose
		});
	
		url=site_url+url;//+"&tmstamp="+Number(new Date());
		//var self = this;
		cutoutdiv= (cutoutdiv!=undefined) ? cutoutdiv=" "+cutoutdiv : "";
		$(overlay).find('div.overlay-content').load(url+cutoutdiv, function() {
			if ($.isFunction(callback)){
				callback();
			}
		});
		overlayApi.load();
		return overlayApi;
	}else{
		setTimeout("resetCgpopOkay();", 500);
	}
}
/* Clears out the content element properly so flash doesn't keep playing */
function onPopupClose(event) {
	var divContainer = el("cgspopupover");
	if(divContainer) divContainer.innerHTML='<div class="overlay-content"></div>';
	var DIVtoRemove=el("cgspopupover");
	if(DIVtoRemove) DIVtoRemove.parentNode.removeChild(DIVtoRemove);
	DIVtoRemove=el("cgspopupoverhandle");
	if(DIVtoRemove) DIVtoRemove.parentNode.removeChild(DIVtoRemove);
}
function dbar(){ // bottom bar on every page
	var barItem=new Array(new Array(),new Array(),new Array(),new Array());
	var barTitles=new Array(Lang.v('downloads'), Lang.v('tracked_media'), Lang.v('recently_visited'), Lang.v('hd_cuts'));
	var barTSpecial=new Array(Lang.v('latest_download'), Lang.v('latest_tracked_media'), "", Lang.v('latest_hd_cut'));
	var instruct=new Array(Lang.v('this_section_track')+'<br><br>'+Lang.v('you_can_add_items')+'<br><br>'+Lang.v('this_list_is_consistent'), Lang.v('this_section_track')+'<br><br>'+Lang.v('you_can_add_items')+'<br><br>'+Lang.v('this_list_is_consistent'), '25 most recently visited CitizenGlobal pages.', 'HD Cut Exports.');
	this.gId = function(ttype){ // get id of bar folder by type
		var rid=0;
		if(ttype=="uploadmedia" || ttype=="clip") rid=1;
		if(ttype=="visit") rid=2;
//		if(ttype=="hdcut") rid=3;
		return rid;
	}
	this.itemCount = function(rid){
		var cc=0;
		for(var i=0;i<barItem[rid].length;i++){
			if(barItem[rid][i]!=null) cc++;
		}
		return cc;
	}
	this.addItemJSON = function(value, notShowSpecial){
		var values=eval(value);
		this.addItem(values[0], values[1], values[2], values[3], values[4], values[5], values[6], notShowSpecial);
	}
	this.addItem = function(barid, ttype, tId, tTitle, tState, tOpt1, tOpt2, notShowSpecial){
		var rid=this.gId(ttype);
		this.addSection(rid);
		var curId=barItem[rid].length;
		var temDivId='dbaritem_'+rid+'_'+curId;
		barItem[rid][curId]=new Array(barid, ttype, tId, tTitle, tState, tOpt1, tOpt2, temDivId, -1); // last 1: last state
		if(el('d_bar')){
			if(ttype=="hdmedia" || ttype=="uploadmedia" || ttype=="clip" || ttype=="hdcut"){
				var tem90='<a href="'+site_url+tOpt2+'">'+tTitle+'</a><br><span id="'+ttype+curId+'_s"></span>';
				var tem91='<div class="d_bar_item" id="'+temDivId+'"><div class="d_bar_item_x"><a href="javascript:void(0);" onclick="dBar.removeItem('+rid+','+curId+');" class="button2 rounded5">X</a></div><a href="'+site_url+tOpt2+'">'+tTitle+'</a><br><span id="'+ttype+curId+'"></span></div>';
				el('d_bar_'+rid).innerHTML=tem91+el('d_bar_'+rid).innerHTML;
				if(el('d_bar_special_'+rid)) el('d_bar_special_'+rid).innerHTML='<i>'+barTSpecial[rid]+'</i><br>'+tem90;
				this.barState(rid,curId);
			}else if(ttype=="visit"){
				var tMessage='Visit';
				if(tOpt1=='s') tMessage='Studio';
				if(tOpt1=='p') tMessage='Project';
				if(tOpt1=='m') tMessage='Media';
				if(tOpt1=='f') tMessage='Folder';
				if(tOpt1=='u') tMessage='Member';
				var tem90='<a href="'+site_url+tOpt2+'">'+tMessage+': '+tTitle+'</a>';
				var tem91='<div class="d_bar_item" id="'+temDivId+'">'+tem90+'</div>';
				el('d_bar_'+rid).innerHTML=tem91+el('d_bar_'+rid).innerHTML;
			}
			var temCnt=this.itemCount(rid);
			el('d_bar_'+rid+'_title').innerHTML=temCnt;
			//if(temCnt>0 && ttype!="visit") el('d_bar_'+rid+'_title').style.textDecoration='blink';
			if(notShowSpecial!=1) this.toggleSpecial(rid,1);
		}
		return curId;
	}
	this.addSection = function(rid){
		if(el('d_bar')){
			if(!el('d_bar_inner')) el('d_bar').innerHTML='<div id="d_bar_inner"></div>';
			if(!el('d_bar_'+rid)){
				var tem83='<div id="d_bar_'+rid+'_wrap" class="d_bar_wrap">';
				if(rid!=2) tem83+='<a href="javascript:void(0);" onclick="dBar.toggleSpecial('+rid+');" class="d_bar_minmax"><span id="d_bar_special_title_'+rid+'">'+Lang.v('show_latest')+'</span></a><div id="d_bar_special_'+rid+'" class="d_bar_special"></div>';
				tem83+='<div id="d_bar_'+rid+'" class="d_bar_field"><div style="padding:10px;color:#FFFFFF">'+instruct[rid]+'</div></div><a href="javascript:void(0);" onclick="dBar.toggleSection('+rid+');" class="d_bar_item_button">'+barTitles[rid]+' - <span id="d_bar_'+rid+'_title">0</span></a><div class="clear"></div></div>';
				el('d_bar_inner').innerHTML+=tem83;
			}
		}
	}
	this.toggleSection=function(rid){
		toggleBlock('d_bar_'+rid);
		if(el('d_bar_special_'+rid)){
			var blockOpen= (el('d_bar_'+rid).style.display=="block") ? 1 : 0;
			el('d_bar_special_'+rid).style.bottom= (blockOpen) ? "334px" : "33px";
			this.toggleSpecial(rid, blockOpen);
		}
	}
	this.toggleSpecial=function(rid,force){
		if(el('d_bar_special_'+rid)){
			if(force!=null){
				el('d_bar_special_'+rid).style.display= (force==1) ? 'block' : 'none';
			}else{
				toggleBlock('d_bar_special_'+rid);
			}
			el('d_bar_special_title_'+rid).innerHTML= (el('d_bar_special_'+rid).style.display=="block") ? Lang.v('hide_latest') : Lang.v('show_latest');
		}
	}
	this.removeItem = function(rid, curId){
		if(barItem[rid][curId]!=null){
			var DIVtoRemove=el(barItem[rid][curId][7]);
			DIVtoRemove.parentNode.removeChild(DIVtoRemove);
			var ajaxConv = new ajax();
			ajaxConv.init();
			var params='op=remove_bar&barid='+barItem[rid][curId][0];
			ajaxConv.load('GET', url_root+'/ajax-bar.php?'+params, true);
			barItem[rid][curId]=null;
//			barItem[rid].splice(curId,1);
			el('d_bar_'+rid+'_title').innerHTML=this.itemCount(rid);
		}
	}
	this.createItem = function(ttype, tId){
		var ajaxConv = new ajax();
		ajaxConv.init();
		ajaxConv.success = function (){
			dBar.addItemJSON(ajaxConv.getResponseText());
		}
		var params='op=create_bar_item&type='+ttype+'&itemkey='+tId;
		ajaxConv.load('GET', url_root+'/ajax-bar.php?'+params, true);
	}
	this.getBarItem=function(rid, curId){
		return barItem[rid][curId];
	}
	this.setBarItemComplete=function(rid, curId, autoPrepare){
		var tt1;
		var bItem=barItem[rid][curId];
		if(bItem[1]=="hdmedia" || bItem[1]=="hdcut"){
			tt1=bItem[5];
			//tt1='<a href="'+site_url+'/download.php?hdid='+bItem[2]+'&mediaid='+bItem[5]+'&dtype=media" class="button2 rounded5">DOWNLOAD</a>';
			//tt1='<a href="'+site_url+'/download.php?hdid='+bItem[2]+'&dtype=cut" class="button2 rounded5">DOWNLOAD</a>';
		}else if(bItem[1]=="uploadmedia" || bItem[1]=="clip"){
			tt1='<a href="'+site_url+bItem[6]+'" class="sprite btn small boxey grey"><span class="sprite">'+Lang.v('open_media')+'</span></a><div class="clear"></div>';
		}
		if(el(bItem[1]+curId)) {
			el(bItem[1]+curId).innerHTML=tt1;
			if(autoPrepare){
				$("#"+bItem[1]+curId+" .prepareLink").click();
			}
		}
		if(el(bItem[1]+curId+"_s")){
			el(bItem[1]+curId+"_s").innerHTML=tt1;
			if(autoPrepare){
				$("#"+bItem[1]+curId+"_s .prepareLink").click();
			}
		}
	}
	this.barState=function(rid, curId){
		if(barItem[rid][curId]!=null){
			if(barItem[rid][curId][4]==1){ // ready
				dBar.setBarItemComplete(rid, curId);
			}else{
				updateProgress(barItem[rid][curId][1], barItem[rid][curId][2], barItem[rid][curId][1]+curId, function(vals, rid, curId) {
					dBar.setBarItemComplete(rid, curId, 1);
				}, null, null, function(vals, rid, curId){
					var bItem=dBar.getBarItem(rid, curId);
					var sets={"secpageid":bItem[1]+curId+"_s", "immax":135, "loadimg":"ajax-loader-ongreen.gif"};
					return sets;
				}, rid, curId);
			}
		}
	}
}

function updateProgress(type, progid, pageid, completecallback, updatecallback, errorcallback, setsFunc, spec1, spec2, design){ // function to update progress of conversions
	if ($.isFunction(setsFunc)){
		var sets=setsFunc(null, spec1, spec2);
	}
	var immax=100;
	if(sets!=null){
		if(sets.immax!=null) immax=sets.immax;
	}
	if(design==undefined) design="general";
	var displayold=true;
	if(sets!=null){
		if(sets.progbar!=null){ // use jquery progress bar instead with custom settings
			displayold=false;
		}
	}
	if(displayold){ // use outdated look
		var img="ajax-loader-onwhite.gif";
		if(sets!=null) if(sets['loadimg']!=null) img=sets['loadimg'];
		if(pageid!=null){
			if(el(pageid)){ // primary place to display
				if(el(pageid).innerHTML==""){
					if(design=="blueOnGrayWide"){
						el(pageid).innerHTML='<div class="d_bar_item_prog" style="width:'+immax+'px;border:none;height:27px;background:url('+site_url+'/images/conversion-progress-gray-bar.jpg);"><img src="'+site_url+'/images/conversion-progress-blue-bar.jpg" id="'+pageid+'_im" height="27" width="1"><span id="'+pageid+'_txt" style="line-height:22px;"></span></div>';
					}else{
						el(pageid).innerHTML='<div class="d_bar_item_prog" style="width:'+immax+'px"><img src="'+site_url+'/images/green-dot.gif" id="'+pageid+'_im" height="15" width="1"><span id="'+pageid+'_txt"></span></div><img src="'+site_url+'/images/'+img+'" width="16" height="16">';
					}
				}
			}
		}
		if(sets!=null){
			if(sets['secpageid']!=null){ // secondary place to display
				if(el(sets['secpageid'])){
					if(el(sets['secpageid']).innerHTML==""){
						el(sets['secpageid']).innerHTML='<div class="d_bar_item_prog" style="width:'+immax+'px"><img src="'+site_url+'/images/green-dot.gif" id="'+sets['secpageid']+'_im" height="15" width="1"><span id="'+sets['secpageid']+'_txt"></span></div><img src="'+site_url+'/images/ajax-loader-ongreen.gif" width="16" height="16">';
					}
				}
			}
		}
	}

	var params='op=check_queueitem_state&type='+type+'&itemkey='+progid;
	$.get(ajax_url+'/ajax-queue.php?'+params, function(values){
		if(values!=null){
			if(values['state']==0){ // in progress
				var exact_progress=parseFloat(values['progress']); //((parseFloat(values['segment'])-1)+parseFloat(values['progress']))/parseFloat(values['segments']);
				if(!displayold){ // use new look
					if(el(pageid)){
						$("#"+pageid).progressBar(exact_progress*100);
					}
				}else{
					if(pageid!=null){ if($("#"+pageid).length){
						if($("#"+pageid+"_txt").length) $("#"+pageid+"_txt").html(queueStatus[values['step']]);
						if($("#"+pageid+"_im").length) $("#"+pageid+"_im").width(exact_progress*immax);
					}}
					if(sets!=null){ if(sets['secpageid']!=null){ if(el(sets['secpageid'])){
						el(sets['secpageid']+"_txt").innerHTML=queueStatus[values['step']];
						el(sets['secpageid']+"_im").width=exact_progress*immax;
					}}}
				}
				if ($.isFunction(updatecallback)){
					updatecallback(values, spec1, spec2);
				}
				setTimeout("updateProgress('"+type+"','"+progid+"','"+pageid+"',"+completecallback+","+updatecallback+","+errorcallback+","+setsFunc+","+spec1+","+spec2+", '"+design+"');", 2000);
			}else if(values['state']==2){ // error
				if(displayold){ // use outdated look
					if(pageid!=null) if(el(pageid)) if($("#"+pageid+"_txt").length) $("#"+pageid+"_txt").html("<font color=red>Error</font>");
					if(sets!=null) if(sets['secpageid']!=null) if(el(sets['secpageid'])) el(sets['secpageid']+"_txt").innerHTML="<font color=red>Error</font>";
				}
				if ($.isFunction(errorcallback)){
					errorcallback(values, spec1, spec2);
				}
			}else if(values['state']==1){ // complete
				if(!displayold){ // use new look
					if(el(pageid)) $("#"+pageid).progressBar(100);
				}else{
					if(pageid!=null){ if(el(pageid)){
						if($("#"+pageid+"_txt").length) $("#"+pageid+"_txt").html("Completed");
						if($("#"+pageid+"_im").length) $("#"+pageid+"_im").width(immax);
					}}
					if(sets!=null){ if(sets['secpageid']!=null){ if(el(sets['secpageid'])){
						el(sets['secpageid']+"_txt").innerHTML="Completed";
						el(sets['secpageid']+"_im").width=immax;
					}}}
				}
				if ($.isFunction(completecallback)){
					completecallback(values, spec1, spec2);
				}
			}
		}
	}, 'json');
}

function ajax(){ // ajax
	var _this
	this.uninitialize=function(){}
	this.loading=function(){}
	this.loaded=function(){}
	this.interactive=function(){}
	this.success=function(){}
	this.failure=function(){}
	this.request
	
	this.init = function(){
		_this=this
		try{
			this.request = new XMLHttpRequest();
		}
		catch (error){
			try{
				this.request = new ActiveXObject("Microsoft.XMLHTTP");
	    }
			catch (error){
				this.request = null;
	    }
		}
	if(!this.request)
		return;
	
	this.request.onreadystatechange= function (){
      switch (_this.request.readyState){
         case 0:
            _this.uninitialize();
            break;
                               
         case 1:
            _this.loading();
            break;
                               
         case 2:
            _this.loaded();
            break;
         case 3:
            _this.interactive();
            break;
                               
         case 4:
           if (_this.request.status == 200)
               _this.success();
            else
               _this.failure();
			break;
      }
	}

//	this.load = function(method, uri, async, params){
	this.load = function(method, uri, async){
		this.request.open(method, uri, async)
//		this.request.send(params)
		this.request.send(null)
	}

	this.abortLoading = function(){
		if(this.request.readyState!=0 && this.request.readyState!=4){
			if(this.request){
				this.init()
			}
		}
	}
	this.isLoading = function(){
		if(this.request.readyState!=0 && this.request.readyState!=4){
			return true			
		}else{
			return false
		}
	}
	this.getResponseText = function(){return this.request.responseText}
	}
}

$.getScript = function(url, callback, cache){
	cache=true;
	$.ajax({
		type: "GET",
		url: url,
		success: callback,
		dataType: "script",
		cache: cache
	});
};
