
var floatDiv = null;
var floatTable = null;
var floatBody = null;
var floatFocus = null;
var mouseX = null;
var mouseY = null;

var picbar_offset = {};
var picbar_interval = {};
var picbar_last_index = {};
var picbar_scroll_interval = {};

var highlights = [];
var grey_back_count = 0;
agent = ( navigator.userAgent.indexOf("Firefox")!=-1 ? 'firefox' : ( navigator.userAgent.indexOf("Opera")!=-1 ? 'opera' : ( navigator.userAgent.indexOf("MSIE")!=-1 ? 'ie' : 'other' ) ) );

function toggleVisibility(id, toggle_type)
{
	var ele = document.getElementById(id);
	var toggle = document.getElementById(id+'_toggle');
	var v;
	if(ele){
		if(ele.style.visibility == 'hidden'){
			ele.style.visibility = 'visible';
			if(toggle){
				if(toggle_type == 'text'){
					clearElement(toggle);
					toggle.appendChild(document.createTextNode( 'Hide' ));
				}
			}
			v = true;
		} else {
			ele.style.visibility = 'hidden';
			if(toggle){
				if(toggle_type == 'text'){
					clearElement(toggle);
					toggle.appendChild(document.createTextNode( 'Show' ));
				}
			}
			v = false;
		}
	}
	
	if(v){
		grey_back_count++;
		var div = document.getElementById('grey_back');		
		if(div){
			div.style.visibility = 'visible';
			div.style.height = window.innerHeight > document.documentElement.scrollHeight ? window.innerHeight : document.documentElement.scrollHeight;
		}
		var ele = document.getElementById(id);
		ele.style.top = window.innerHeight/2 - ele.scrollHeight/2;
		ele.style.left = window.innerWidth/2 - ele.scrollWidth/2;
	} else {
		if(--grey_back_count == 0){
			var div = document.getElementById('grey_back');
			if(div){
				div.style.visibility = 'hidden';
			}
		}
	}
}
function parseFormAction(id,form,cmd,a)
{
	array = new Array();
	for(var i = 0; i < a.length; i++){
		var ele = document.getElementById('FORM_'+id+'_'+a[i]);
		if(ele.value != -1)
			array.push(a[i]+'='+ele.value);
	}
	for(var j = 0; j < array.length; j++){
		cmd += "&"+array[j];
	}
	location.href = cmd;
}

function dataForm_data(tab_name, data_type, i, r, val)
{
	var span = document.getElementById("data_select_"+i+"_"+r);	
	var table_data = window["data_"+i+"_"+r];
	var values = window["data_values_"+i+"_"+r];
	var count = document.getElementById("data_count_"+i+"_"+r);
	
	count.value = values.length;
	clearElement(span);
	
	var val_str = '';
	
	if(values.length > 0){
		for(var k=0; k < values.length; k++){
			var data = table_data[values[k]];
			if(k > 0)
				val_str += ',';
			val_str += data.eid;
			
				var div = document.createElement('div');
				div.appendChild(document.createTextNode(data.val+' '));
			if(data.x == 1){
				var img = document.createElement('img');
				img.src = './img/delete.gif';
				img.onclick = new Function("return delete_dataMulti("+k+", '"+tab_name+"', "+data_type+","+i+","+r+","+val+")");
				div.appendChild(img);
			}
			span.appendChild(div);
			
			/*
			var input = document.createElement('input');
			input.type = 'hidden';
			input.name = '';
			input.value = '';
			div.appendChild(input);
			*/
		}
	}
	var value_string = document.getElementById("data_value_string_"+i+"_"+r);
	value_string.value = val_str;
	
	if(table_data){
		var s = 0;
		var select = document.createElement("select");
		select.name = 'dataMulti_select_'+i+'_'+r;
		select.id = 'dataMulti_select_'+i+'_'+r;
		select.style.fontSize ='smaller'
		select.onchange = new Function("return selectMultiData('"+tab_name+"', "+data_type+","+i+","+r+","+val+");");
		
		var option = document.createElement('option');
		option.appendChild(document.createTextNode('== '+tab_name+' =='));
		option.selected = 'selected';
		select.appendChild(option);
		
		for( var j=0; j < table_data.length; j++){
			var b = false;
			for(var k=0; k < values.length; k++){
				if(values[k] == j){
					b = true;
					break;
				}
			}
			if(b)
				continue;
			var tab = table_data[j];
			var option = document.createElement('option');
			option.value = j;
			option.appendChild(document.createTextNode(tab.val));
			if(val == tab.val)
				option.selected = 'selected';
			select.appendChild(option);
			
			s++;
		}
		if(s > 0)
			span.appendChild(select);
	}
}
function delete_dataMulti(k,tab_name,  data_type, i, r, val)
{
	var values = window["data_values_"+i+"_"+r];
	values.splice(k,1);
	dataForm_data(tab_name, data_type, i, r, val);
}

function selectMultiData(tab_name, data_type, i, r, val)
{
	var dataMuilt_select = document.getElementById('dataMulti_select_'+i+'_'+r);
	if(dataMuilt_select){
		var index = dataMuilt_select.options[dataMuilt_select.selectedIndex].value;
		if(index >= 0){
			var values = window["data_values_"+i+"_"+r];
			values.push(index);
			dataForm_data(tab_name, data_type, i, r, val);
		}
	}
}
function dataFieldTypeSel(field_id, val)
{
	var app = '';
	if(field_id)
		app += '_'+field_id
	var fieldSelect = document.getElementById("dataFieldTypeSelect"+app);
	var field_type = fieldSelect.options[fieldSelect.selectedIndex].value;

	var tableSelectSpan = document.getElementById("dataFieldTableType"+app);
	
	if(field_type == 99 || field_type == 98){
		if(fieldTableTypes && !(tableSelectSpan.hasChildNodes())){
			var select = document.createElement("select");
			select.name = 'fieldTableType'+app;
			
			var option = document.createElement('option');
			option.appendChild(document.createTextNode('==Data Table=='));
			if(!val)
				option.selected = 'selected';
			select.appendChild(option);
			
			for( var i=0; i < fieldTableTypes.length; i++){
				var tab = fieldTableTypes[i];
				var option = document.createElement('option');
				option.value = tab.id;
				option.appendChild(document.createTextNode(tab.name));
				if(val == tab.id)
					option.selected = 'selected';
				select.appendChild(option);
			}
			tableSelectSpan.appendChild(select);
		}
	} else {
		clearElement(tableSelectSpan);
	}
}

//jquery dropdown
var timeout    = 500;
var closetimer = 0;
var ddmenuitem = 0;

function jsddm_open()
{  jsddm_canceltimer();
   jsddm_close();
   ddmenuitem = $(this).find('ul').css('visibility', 'visible');}

function jsddm_close()
{  if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');}

function jsddm_timer()
{  closetimer = window.setTimeout(jsddm_close, timeout);}

function jsddm_canceltimer()
{  if(closetimer)
   {  window.clearTimeout(closetimer);
      closetimer = null;}}

$(document).ready(function()
{  $('#jsddm > li').bind('mouseover', jsddm_open)
   $('#jsddm > li').bind('mouseout',  jsddm_timer)});

document.onclick = jsddm_close;
//

function linkDropdownOn(links)
{
	console.log('on');
	console.log(objectToString(links));
}
function linkDropdownOff()
{
	console.log('off');
}
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 validatePassword(ele)
{
	var val = ele.value;
	var feedback = document.getElementById(ele.id+'_feedback');
	if(val && val.length >= 6)
	{
		feedback.src = './img/yes.gif';
		feedback.width = 15;
		feedback.height = 15;
	}
	else
	{
		feedback.src = './img/no.gif';
		feedback.width = 15;
		feedback.height = 15;
	}
}
function validateEmail(ele)
{
	var val = ele.value;
	var feedback = document.getElementById(ele.id+'_feedback');
	var reg = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
	if(val && val.match(reg))
	{
		feedback.src = './img/yes.gif';
		feedback.width = 15;
		feedback.height = 15;
	}
	else
	{
		feedback.src = './img/no.gif';
		feedback.width = 15;
		feedback.height = 15;
	}
}
function compareFileds(ele, target)
{
	var compare = document.getElementById(target);
	if(compare)
	{
		var feedback = document.getElementById(ele.id+'_feedback');
		if( compare.value == ele.value )
		{
			feedback.src = './img/yes.gif';
			feedback.width = 15;
			feedback.height = 15;
		}
		else
		{
			feedback.src = './img/no.gif';
			feedback.width = 15;
			feedback.height = 15;
		}
	}
}
function scrollPicBar(id, dir, size)
{
	picbar_scroll_interval[id] = setInterval( "picbar_scroll_loop('"+id+"', '"+dir+"', "+size+")", 10);
}
function picbar_scroll_loop(id, dir,size)
{
	if(!picbar_interval[id])
	{
		var left = document.getElementById('picbar_scroll_left_'+id);
		var right = document.getElementById('picbar_scroll_right_'+id);
		if( dir == 'left' )
		{
			if( picbar_last_index[id] == 1 )
			{
				if(left)
				{
					left.style.opacity = 0.2;
					left.style.filter = 'alpha(opacity=20)';
				}
				return clearInterval(picbar_scroll_interval[id]);
			}
			if(left && left.style.opacity != 0.5)
			{
				left.style.opacity = 0.5;
				left.style.filter = 'alpha(opacity=50)';
			}
			if(right && right.style.opacity != 0.5)
			{
				right.style.opacity = 0.5;
				right.style.filter = 'alpha(opacity=50)';
			}
			picbar_interval[id] = setInterval( "picbar_scale_loop('"+id+"', "+(picbar_last_index[id]-1)+", "+size+", 5)", 50);
		}
		else if(dir == 'right' )
		{
			if( picbar_last_index[id] == size )
			{
				if(right)
				{
					right.style.opacity = 0.2;
					right.style.filter = 'alpha(opacity=20)';
				}
				return clearInterval(picbar_scroll_interval[id]);
			}
			if(left && left.style.opacity != 0.5)
			{
				left.style.opacity = 0.5;
				left.style.filter = 'alpha(opacity=50)';
			}
			if(right && right.style.opacity != 0.5)
			{
				right.style.opacity = 0.5;
				right.style.filter = 'alpha(opacity=50)';
			}
			picbar_interval[id] = setInterval( "picbar_scale_loop('"+id+"', "+(picbar_last_index[id]+1)+", "+size+", 5)", 50);
		}
	}
}
function stopScrollPicBar(id)
{
	if(picbar_scroll_interval[id])
	{
		clearInterval(picbar_scroll_interval[id]);
		picbar_scroll_interval[id] = null;
	}
}
function picbar_over(id, index, size, speed)
{
	speed = speed ? speed : 1;
	if(picbar_interval[id])
	{
		clearInterval(picbar_interval[id]);
		picbar_interval[id] = null;
	}
	picbar_interval[id] = setInterval( "picbar_scale_loop( '"+id+"', "+index+", "+size+", 5)", 50/speed);
}
function picbar_scale_loop(id, index, size, diff)
{
	picbar_last_index[id] = index;
	var picbar = document.getElementById('picbar_'+id);
	var container = document.getElementById('picbar_container_'+id);
	var quit = false;
	var w = 0;
	for( var i = 1; i <= size; i++)
	{
		var element = document.getElementById('picbar_'+i+'_'+id);
		if(element)
		{
			var height = 50;
			var d = diff;
			if( i == index )
				height = 100;
			else if( i == index - 1 || i == index + 1 )
				height = 75;

			var dh = height - parseInt(element.style.height);
			if( dh > 0 && dh < d  )
				d = dh;

			if( dh < 0 && dh > -d  )
				d = dh;
			else if(dh < 0 )
				d = -d;

			if(dh == 0)
			{
				d = 0;
				if( i == index )
					quit = true;
			}
			
			element.style.height = parseInt(element.style.height) + d;
			w += parseInt(element.clientWidth)+5;
			if( i == index )
			{
				if( w + parseInt(picbar.style.left) >= container.clientWidth -20 )
				{
					quit = false;
					picbar.style.left = parseInt(picbar.style.left) - 10;
				}
				else if( (w-parseInt(element.clientWidth)-20) + parseInt(picbar.style.left) < 0 )
				{
					quit = false;
					picbar.style.left = parseInt(picbar.style.left) + 10;
				}
			}
		}
	}
	if( quit )
	{
		clearInterval(picbar_interval[id]);
		picbar_interval[id] = null;
	}
}
function picbar_out(index,size)
{
	//clearInterval(picbar_interval);
	//ele.style.height = '50px';
}
function updateColorValue(name,val)
{
	var p=new RegExp('#[a-f0-9]{6}','i');
	if(val.match(p))
	{
		var ele = document.getElementById(name);
		if(ele)
			ele.style.backgroundColor = val;
	}
}
function colorPicker(name, val)
{
	var c = {
			0:{'r':0,'g':0,'b':0},
			1:{'r':255,'g':0,'b':0},
			2:{'r':255,'g':255,'b':0},
			3:{'r':0,'g':255,'b':0},
			4:{'r':0,'g':255,'b':255},
			5:{'r':0,'g':0,'b':255},
			6:{'r':255,'g':0,'b':255}
			};
	var div = document.getElementById('colorPicker');
	if(div)
	{
		killFloatDiv();
		return;
	}
	div = document.createElement('div');

	var tbody = document.createElement('tbody');
	for( var i=0; i<=6; i++)
	{
		var lo = 1;
		if( i > 0 )
		{
			lo = 8;
			var rc = ( c[i].r == 0 ? ( c[i-1].r == 255 ? -1 : 0 ) : ( c[i-1].r == 0 ? 1 : 2 ) );
			var gc = ( c[i].g == 0 ? ( c[i-1].g == 255 ? -1 : 0 ) : ( c[i-1].g == 0 ? 1 : 2 ) );
			var bc = ( c[i].b == 0 ? ( c[i-1].b == 255 ? -1 : 0 ) : ( c[i-1].b == 0 ? 1 : 2 ) );
		}
			
		for(var gr=0;gr<lo;gr++)
		{
			var tr = document.createElement('tr');
			var r=(rc == -1? 255 :0 );
			var g=(gc == -1? 255 :0 );
			var b=(bc == -1? 255 :0 );
			var inc = 16;
			for(var j=0;j<32;j++)
			{
				if( i == 0 && gr == 0 )
				{
					r += inc/2;
					g += inc/2;
					b += inc/2;
				}
				else
				{
					if( j <= inc )
					{
						if( rc != 0 )
							r += (rc == 2?inc:rc*((inc/(gr+1)*gr)));
						if( gc != 0 )
							g += (gc == 2?inc:gc*((inc/(gr+1)*gr)));
						if( bc != 0 )
							b += (bc == 2?inc:bc*((inc/(gr+1)*gr)));
					}
					else
					{
						if( rc == 0 )
							r += inc;
						if( gc == 0 )
							g += inc;
						if( bc == 0 )
							b += inc;
					}
				}
				r = parseInt(( r > 255 ? 255:( r < 0 ? 0:r)));
				g = parseInt(( g > 255 ? 255:( g < 0 ? 0:g)));
				b = parseInt(( b > 255 ? 255:( b < 0 ? 0:b)));
				
				var td = document.createElement('td');
				td.width = 10;
				td.height = (i==0?10:5);
				
				var rHex = r.toString( 16 );
				rHex = ( rHex.length == 1 ? rHex+"0" : rHex );
				var gHex = g.toString( 16 );
				gHex = ( gHex.length == 1 ? gHex+"0" : gHex );
				var bHex = b.toString( 16 );
				bHex = ( bHex.length == 1 ? bHex+"0" : bHex );
				
				td.style.backgroundColor = '#'+rHex+gHex+bHex;
				td.appendChild(document.createTextNode(''));
				td.onclick = new Function("return pickColor('"+'#'+rHex+gHex+bHex+"', '"+name+"');");
				td.onmouseover = new Function("return pickColorMouse('"+'#'+rHex+gHex+bHex+"');");
				
				tr.appendChild(td);
			}
			tbody.appendChild(tr);
		}
	}
	
	var table = document.createElement('table');
	table.cellPadding=0;
	table.cellSpacing=0;
	table.className = 'solid';
	table.appendChild(tbody);
	div.appendChild(table);
	
	var orig = document.createElement('div');
	orig.width=30;
	orig.height=15;
	orig.style.backgroundColor = val;
	orig.appendChild(document.createTextNode('Original Colour'));
	orig.className = 'solid';
	
	var pick = document.createElement('div');
	pick.width=30;
	pick.height=15;
	pick.style.backgroundColor = val;
	pick.id = 'pick_color';
	pick.appendChild(document.createTextNode('New Colour'));
	pick.className = 'solid';
	
	div.appendChild(orig);
	div.appendChild(pick);
	
	div.id = 'colorPicker';
	func = new Function( "grabMouseCoords"+( agent != "firefox" ? '()' : '' )+";" );
	func();
	var cen = navigator.userAgent.indexOf("Firefox")!=-1 ? true: false;
	displayFloatDiv(div, cen);
}
function pickColor(val, name)
{
	var input = document.getElementById('l_'+name);
	if(input)
		input.value = val;

	var div = document.getElementById('c_l_'+name);
	if(div)
		div.style.backgroundColor = val;
		
	killFloatDiv();
}
function pickColorMouse(val)
{
	var ele = document.getElementById('pick_color');
	if(ele)
		ele.style.backgroundColor = val;
}
function parse_preview(textbox)
{
	var div = document.getElementById('text_preview');
	var text = parseMessage(textbox.value, null, true, true);
	clearElement(div);
	div.appendChild(text);
}
function initialize(ele, lat, long, zoom, a)
{
	if (GBrowserIsCompatible())
	{
		var map = new GMap2(document.getElementById(ele));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(lat, long), zoom);

		// Create a base icon for all of our markers that specifies the
		// shadow, icon dimensions, etc.
		var baseIcon = new GIcon(G_DEFAULT_ICON);
		baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
		baseIcon.iconSize = new GSize(20, 34);
		baseIcon.shadowSize = new GSize(37, 34);
		baseIcon.iconAnchor = new GPoint(9, 34);
		baseIcon.infoWindowAnchor = new GPoint(9, 2);

		// Creates a marker whose info window displays the letter corresponding
		// to the given index.
		function createMarker(point, index, id, img, title)
		{
			var marker = new GMarker(point);
			GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml("<img src='./images/thumb_"+id+img+"'><br><span align='center'><a href='./?cmd=gallery&pid="+id+"' target='_new' class=link>"+title+"</a></span>");});
			return marker;
		}

		for (var i = 0; i < a.length; i++)
		{
			var im = a[i];
			var point = new GLatLng(im[0], im[1]);
			map.addOverlay(createMarker(point, i, im[2], im[3], im[4]));
		}
	}
}
function geoData_inputs(c, id)
{
	var mode = c.checked ? true: false;
	var e = document.getElementById('geoData_lat_'+id);
	if(e)
	{
		if( mode )
			e.style.visibility = 'visible';
		else
			e.style.visibility = 'hidden';
	}
	var e = document.getElementById('geoData_long_'+id);
	if(e)
	{
		if( mode )
			e.style.visibility = 'visible';
		else
			e.style.visibility = 'hidden';
	}
}
function batch_sub_select(ele, status)
{
	var v = ele.options[ele.selectedIndex].value;

	var e = document.getElementById('selectTag_'+status);
	if( v == 'addCategory' || v == 'deleteCategory' )
		e.style.visibility = 'visible';
	else
		e.style.visibility = 'hidden';

	var e = document.getElementById('selectStatus_'+status);
	if( v == 'editPictureStatus' )
		e.style.visibility = 'visible';
	else
		e.style.visibility = 'hidden';

	var e = document.getElementById('selectPicture_'+status);
	if( v == 'movePicture' )
		e.style.visibility = 'visible';
	else
		e.style.visibility = 'hidden';
}
function toggleOptions(id, i)
{
	for( var m = 0; m <= i; m++ )
	{
		var checkbox = document.getElementById( id+'_'+m );
		if( checkbox )
		{
			if( checkbox.checked == true )
				checkbox.checked = false;
			else
				checkbox.checked = true;

			if(checkbox.value)
				geoData_inputs(checkbox, checkbox.value)

		}
	}
}
function imgPopUp()
{
	var url;

	url = "./admin.php?cmd=uploadImg";
	mywin=window.open(url, "ImgViewer", "width=500,height=200,titlebar=no,menubar=no,location=no,directories=no,status=no,resizable=no");
	mywin.focus();
	return false;
}
function fadeElement(ele, val)
{
	ele.style.filter = "alpha(opacity="+val*100+")";
	ele.style.opacity = val;

}
function highlightElement( element, color )
{
	var color = (color == null) ? "yellow" : color;
	element.style.backgroundColor = color;
}

function dehighlightElement( element )
{
	element.style.backgroundColor = "";
}
function showMiniPic( element, id, ext, color, event )
{
	var color = (color == null) ? "yellow" : color;
	/*
	var func = new Function( "return grabMouseCoords"+( agent != "firefox" ? '()' : '' )+";" );
	func();
	*/
	grabMouseCoords(event);
	highlightElement( element, color );

	displayFloatDiv( makeImg( './images/thumb_'+id+ext ) );
}
function killMiniPic( element )
{
	dehighlightElement( element );
	killFloatDiv();
}

function toggleForm()
{
	var state = null;
	if( arguments[0] )
	{
		if( typeof arguments[0] == "object" )
			state = arguments[0].checked;
		else if( typeof arguments[0] == 'string' )
		{
			var check = document.getElementById( arguments[0] );
			if( check )
				state = check.checked;
		}
		for( var i = 1; i <= arguments.length; i++ )
		{
			var ele = document.getElementById( arguments[i] );
			if( ele )
			{
				if( ele.disabled && state )
					ele.disabled = false;
				else if( !state )
					ele.disabled = true;
			}
		}
	}
}
function focusRadio( val )
{
	var ele = document.getElementById( "pic_select"+val );
	ele.checked = true;
}
