/*
  Filename: general.js , creation date 2008-03-21 

  Family Together Project
  http://www.family-together.eu/

  Copyright (c) 2008 FT
 
  written by: Pawel Waleczek
  
*/
var isIE = navigator.appName.indexOf( 'Microsoft' )>=0;

function getByID( id ) {
	return document.getElementById(id) ;
}

function onLogin ( form ) {
	var address = document.location.href.replace('http://', '');
	address = address.replace('https://', '');
	address = address.replace('logout', '')
	if ( getByID('ssl') ) {
		if( getByID('ssl').checked )
			form.action = "https://"+ address;
		else 
			form.action = "http://" + address; 	
	}
}

function hide( id ){
	var el = getByID(id);
	if( el && el.style ){
		el.style.visibility = "hidden";
		el.style.display = "none";
	}
}
function msgto( a, b ){
	document.location.href = 'mailto:'+ b +'@'+ a;
	return false;
}
function show( id ){
	var el = getByID(id);
	if( el && el.style ){
		el.style.visibility = "visible";
		el.style.display = "block";
	}
}

function confirmation( type ){

	try{
		if( lang[type]===false )
			return true;
		else if( lang[type] )
			return confirm( lang[type] );
	} catch(e){}
	
	return false;
}

function reloadCode( target ){
	getByID(target).src = "gfx/code.php?"+Math.random();
}

function markAll( state, id ){
	var f = getByID(id);
	if( f['sel[]'].checked!==undefined ){
		f['sel[]'].checked = state;
	} else {
		for( var i=0; i<f['sel[]'].length; i++ ){
			f['sel[]'][i].checked = state; 
		}
	}
}

function markField( fld, error ){
	if( error ){
		fld.style.backgroundColor = "#FF0000";
		fld.style.color = "#FFFFFF";
	} else {
		fld.style.backgroundColor = "#FFFFFF";
		fld.style.color = "#000000";
	}
	return error;
}

function magnify( img, w, h ){
	if( !getByID('zoomImg') ) getByID('topLayer').innerHTML = getByID('topLayer').innerHTML + '<div id="zoomImg"></div>';
	
	var sw = isIE ? document.body.offsetWidth : window.innerWidth;
	var sh = isIE ? document.body.offsetHeight : window.innerHeight;
	getByID("zoomImg").innerHTML = "<a href=\"javascript:hide('zoomImg')\" title=\""+lang.close+"\"><img src=\""+img+"\" width=\""+w+"\" height=\""+h+"\" alt=\""+lang.close+"\" /></a>";
	getByID("zoomImg").style.margin = Math.max(0,(sh-h)/2-10)+"px "+ Math.max(0,(sw-w)/2-10)+"px";
	getByID("zoomImg").style.width = w+"px";
	getByID("zoomImg").style.height = h+"px";
	show("zoomImg");
	return false;
}

function dateRange( date1, date2 ){
	var d1 = date1.match(/[0-9]+/g);
	var d2 = date2.match(/[0-9]+/g);
	if( d1[0]==d2[0] && d1[1]==d2[1] && d1[2]==d2[2] ){
		if( d1[3]=='00' && d1[4]=='00' && d2[3]=='23' && d2[4]=='59' ){
			return d1[2]+'.'+d1[1]+'.'+d1[0];
		}else{
			return d1[2]+'.'+d1[1]+'.'+d1[0]+' '+d1[3]+':'+d1[4]+' - '+d1[3]+':'+d1[4];
		}
	}else{
		if( d1[3]=='00' && d1[4]=='00' && d2[3]=='23' && d2[4]=='59' ){
			return d1[2]+'.'+d1[1]+'.'+d1[0]+' - '+d2[2]+'.'+d2[1]+'.'+d2[0];
		}else{
			return d1[2]+'.'+d1[1]+'.'+d1[0]+' '+d1[3]+':'+d1[4]+' - '+d2[2]+'.'+d2[1]+'.'+d2[0]+' '+d2[3]+':'+d2[4];
		}
		
	}
	
}


function chkDate( fld ){
	var date = fld.value 
	if( date ){
		var reg = /^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-[0-9]{4}$/;
		if( !reg.exec(date) ) {
			markField( fld, true );
			alert( lang.wrongDateFormat );
			return;
		}
	}
	markField( fld, false );
}

function mail(user, domain){window.location = 'mailto:'+user+'@'+domain;}

function str_repeat(i, m) { for (var o = []; m > 0; o[--m] = i); return(o.join('')); }

function sprintf () {
  var i = 0, a, f = arguments[i++], o = [], m, p, c, x;
  while (f) {
    if (m = /^[^\x25]+/.exec(f)) o.push(m[0]);
    else if (m = /^\x25{2}/.exec(f)) o.push('%');
    else if (m = /^\x25(?:(\d+)$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) {
      if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) throw("Too few arguments.");
      if (/[^s]/.test(m[7]) && (typeof(a) != 'number'))
        throw("Expecting number but found " + typeof(a));
      switch (m[7]) {
        case 'b': a = a.toString(2); break;
        case 'c': a = String.fromCharCode(a); break;
        case 'd': a = parseInt(a); break;
        case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break;
        case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break;
        case 'o': a = a.toString(8); break;
        case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break;
        case 'u': a = Math.abs(a); break;
        case 'x': a = a.toString(16); break;
        case 'X': a = a.toString(16).toUpperCase(); break;
      }
      a = (/[def]/.test(m[7]) && m[2] && a > 0 ? '+' + a : a);
      c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' ';
      x = m[5] - String(a).length;
      p = m[5] ? str_repeat(c, x) : '';
      o.push(m[4] ? a + p : p + a);
    }
    else throw ("Huh ?!");
    f = f.substring(m[0].length);
  }
  return o.join('');
}

var CapsAlert = false;
function capLock(e){
	if( !CapsAlert ){
		kc = e.keyCode ?e.keyCode : e.which;
		sk = e.shiftKey?e.shiftKey :(kc==16? true : false);
		if(((kc>=65 && kc<=90) && !sk) || ((kc>=97 && kc<=122) && sk)){
			alert('Caps Lock is on!');
			CapsAlert = true;
		}
	}
}

