	var USER_MAINPAGE = '/index.php';
var current_page = 'index';
var lang_cache = [];

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1; 
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    } 
  }
return "";
}


function contact_form_check(){
	if ($('name') != undefined &&  $F('name')==''){
		Element.show('contact_error');
		$('contact_error').innerHTML = Langs.cont_badname;
		$('name').focus();
		return false;
	}
	if ($('email') != undefined && $F('email')==''){
		Element.show('contact_error');
		$('contact_error').innerHTML = Langs.cont_bademail;
		$('email').focus();
		return false;
	}
	if ($F('subject')==''){
		Element.show('contact_error');
		$('contact_error').innerHTML = Langs.cont_badsubject;
		$('subject').focus();
		return false;
	}
	if ($F('text_message')==''){
		Element.show('contact_error');
		$('contact_error').innerHTML = Langs.cont_badmessage;
		$('text_message').focus();
		return false;
	}
	if ($F('antispam')==''){
		Element.show('contact_error');
		$('contact_error').innerHTML = Langs.cont_badantispam;
		$('antispam').focus();
		return false;
	}
	Element.hide('contact_error');
	return true;
}

//------
function show_index_content(c_type) {
	if ($('content_block')) {
		$ld('/inc_content.php?type='+c_type, 'content_block');
	} else {
		if (c_type == 'index') {
			window.location = USER_MAINPAGE;
		} else {
			$ld('/inc_content.php?type='+c_type, 'main_block');
		}
	}
	return true;
}

function contact_form_submit(){

	if (!contact_form_check())
		return false;

	var process = 'contact_us';
	var form_id = 'contact_form';
	var callback_func = function(resp){
		var arrayresp = resp.parseJSON();
		if (arrayresp.error != "0"){
			Element.show('contact_error');
			$('contact_error').innerHTML = arrayresp.error;
		}
		else{
			Element.hide('contact_error');
			$('contact_us_div').innerHTML = arrayresp.html;
		}
	}
	SendFormByAjax(process, form_id, callback_func);
}


function email_is_valid(str){
	var rEx = /^(([\_-]*[\w\xd6\xdc\xc4\xf6\xfc\xe4\xdf]+[\_-]*)+\.)*([\_-]*[\w\xd6\xdc\xc4\xf6\xfc\xe4\xdf]+[\_-]*)+@(([\_-]*[\w\xd6\xdc\xc4\xf6\xfc\xe4\xdf]+[\_-]*)+\.)+([A-Za-z]{2,4}){1}$/;
	var x = rEx.test(str);
	if(!x) return Langs.reg_bademail;
	else return false ;
}
function rseed(n) {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = n ;
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}
function require() {
	if(!arguments.length) return;
	var h = gc('HEAD');
	var z = [];
	for (var i=0; i<arguments.length; i++){
		var e = document.createElement('SCRIPT') ;
		e.setAttribute("src",S.lib+'/'+arguments[i]) ;
		e.setAttribute("type",'text/javascript') ;
		h[0].appendChild(e);
	}
}
function require_once() {
	if(!arguments.length) return;
	var c = gc('SCRIPT');
	var h = gc('HEAD');
	var z = [];
	if(c.length){
		for (var i=0; i<c.length; i++){
			if(c[i].src){
				z[z.length] = c[i].src.replace(new RegExp('.*\/(.*[\.php|\.js]).*$', "i"), "$1");
			}
		}
	}
	for (var i=0; i<arguments.length; i++){
		if(!z.in_array(arguments[i])){
			var e = document.createElement('SCRIPT') ;
			e.setAttribute("src",S.lib+'/'+arguments[i]) ;
			e.setAttribute("type",'text/javascript') ;
			h[0].appendChild(e);
		}
	}
}

function $ld(what, where, callback_func){
	var AJ ;
	$(where).innerHTML = '' ;
	Element.show('loading_bar');
	try{AJ = new Ajax.Updater(
		where, what,
		{
			asynchronous:true, 
			method:'get', 
			evalScripts:true,
		    onSuccess:function(o){
			    			    	if (callback_func !='undefined')
			    			    		callback_func(o.responseText);
			    			    		

			    	},
	    	onComplete:Element.hide('loading_bar')}
    );
    }
	catch(e) {alert_msg('$ld: '+e);}
	finally {return AJ ;}
}

function $ldp(what, where, opts, callback_func){
	var AJ ;
	$(where).innerHTML = '' ;
	Element.show('loading_bar');
	try{AJ = new Ajax.Updater(
		where, what,
		{
			asynchronous:true, 
			method:'post', 
			evalScripts:true,
			parameters: opts.implode('&'),
		    onSuccess:function(o){
			    			    	if (callback_func !='undefined')
			    			    		callback_func(o.responseText);
			    			    		

			    	},
	    	onComplete:Element.hide('loading_bar')}
    );
    }
	catch(e) {alert_msg('$ld: '+e);}
	finally {return AJ ;}
}


function $ldjs(s){
	var AJ ;
	Element.show('loading_bar');
	try{AJ = new Ajax.Request(s, {onSuccess: function(o){var ret=o.responseText; eval(ret); Element.hide('loading_bar');}});}
    catch(e) {alert_msg('$gd: '+e);}
	finally {return AJ;}
}

function $synch_ld(s,d){
	var AJ ;
	$(d).innerHTML = '' ;
	Element.show('loading_bar');
	try{AJ = new Ajax.Updater(d, s, {asynchronous:false, method:'get', evalScripts:true,
		onSuccess: function(o){Element.hide('loading_bar');} });}
	catch(e) {alert_msg('$ld: '+e);}
	finally {return AJ ;}
}


/*----------------------------------------------------------------*/
/* Prototype Extention                                            */
/*----------------------------------------------------------------*/
Object.extend(Array.prototype, {
	implode : function(s) {
		var str = '';
		if(!this.length) return str;
		for (var i = 0; i < this.length; i++) {
			if (i > 0) { str += s; }
			str += this[i];
		}
	  return str ;
	}
});
Object.extend(String.prototype, {
	trim: function() {
  	return this.strip() ;
  },
	htmlspecialchars: function() {
  	return this.escapeHTML() ;
  },
  gpc: function() {
  	s = this;
  	s = s.replace(new RegExp('&', "gim"), "&#38;");
  	s = s.replace(new RegExp('=', "gim"), "&#61;");
  	s = s.replace(new RegExp('\'', "gim"), "&#39;");
  	s = s.replace(new RegExp('"', "gim"), "&#34;");
  	s = s.replace(new RegExp('"', "gim"), "&#34;");
  	return s;
  },
	sprintf : function(){
		var tokens = this.split("%s");
	   if (arguments.length != (tokens.length - 1)) {
	   	throw 'String.sprintf(): number of tokens <> number of arguments in ' + this;
	   }
	   var s = tokens[0];
	   for (var i = 0; i < arguments.length; ++i) {
	     s += (arguments[i] + tokens[i + 1]);
	   }
	   return s;
	},
	str_repeat : function(n) {
		var ret = "";
	  for (var i = 0; i < n; ++i) {
	  	ret += this;
	  }
	  return ret;
	},
	explode : function(s) {
	  return this.split(s);
	}
});


/*** clock ***/

var timerID = null;
var timerRunning = false;
function stopclock (){
	if(timerRunning)
	clearTimeout(timerID);
	timerRunning = false;
}
function showtime () {

	var now = new Date();
	var hours = now.getHours();
	if (hours == "0") hours = 12;
	hours = S.lang =='en' ? ( "" + ((hours > 12) ? hours - 12 : hours) ) : ('' + hours );
	var minutes = now.getMinutes();
	minutes += ((minutes < 10) ? "0" : "");
	var seconds = now.getSeconds();
	seconds += ((seconds < 10) ? "0" : "");

	$('timer_wd').innerHTML = L.w[now.getDay()] ;
	$('timer_m').innerHTML = L.m[now.getMonth()] ;
	var mday = now.getDate();
	$('timer_d').innerHTML = ((mday < 10) ? "0" : "") + mday ;
	$('timer_y').innerHTML = now.getFullYear() ;

	$('timer_h').innerHTML = hours ;
	$('timer_min').innerHTML = minutes;
	$('timer_s').innerHTML = seconds;
	if(S.lang =='en') {$('timer_s').innerHTML += (parseInt(hours) >= 12) ? " PM" : " AM" };

	timerID = setTimeout("showtime()",1000);
	timerRunning = true;
}
function startclock() {
	stopclock();
	showtime();
}

// -----

function login_validation(elementID){
	var nick = $F(elementID);
	error_value = '';
//	if(!nick ){return;}
	if(nick.length < 4 || nick.length > 20 || new RegExp('[^0-9a-z_]','i').test(nick)){
	    error_value=Langs.reg_badnick;//'Bad nickname' 'User name can contain only letters, numbers and undrscore sign';
    }
    return error_value;
}

// ------

function password_validation(elementID){
	var error;
	var pass = $F(elementID);
	if(pass.length < 6 || pass.length > 20){
		error = Langs.reg_badpass;
		return error;
	}
	else {
		return false;
	}
}


// ------

function email_validation(elementID){
	var mail = $F(elementID).trim();
//	if(!mail) {return false;}
	if(mail.length > 0 && email_is_valid(mail)){
	    error=Langs.reg_bademail;
		return error;
	}
	else {
		return false;
	}
}

// ------
function antispam_validation(elementID){
	var antispam = $F(elementID);
//	if(!mail) {return false;}
	if(antispam.length < 1 ){
	    error=Langs.reg_badchars;
		return error;
	} else {
		return false;
	}
}

// ------
function url_validation(elementID){
	var url = $F(elementID);
	error_value = '';
//	if(!url ){return;}  || new RegExp('[^0-9a-z_]','i').test(url)
	if(url.length < 10){
	    error_value=Langs.blog_wrongurl;
    }
    return error_value;
}

// ------

function get_selected_by_id(elemID){

 var elem = $(elemID);
 var selected_arr =[];

	if (elem) {

		for (var i=0; i < elem.length; i++) {

			if (elem.options[i].selected == true) {
				selected_arr['text']  = elem.options[i].text ;
				selected_arr['value'] = elem.options[i].value ;
  				return selected_arr;
			}
		}
	}
	return false;
}

function get_options_values_by_name(elemName){

 var elem = document.getElementsByName(elemName);
 var selected_list='';

 if (elem) {

	 for (var i=0; i < elem.length; i++) {
	   if (elem[i].checked == true) {
		  if(selected_list.length > 0) {
			  selected_list = selected_list+ ","+elem[i].value;
		  } else {
			  selected_list = elem[i].value;
		  }
	   }
	}
 }

  return selected_list;
}
// ------
function get_options_values(elemName){

 var elem = document.getElementsByName(elemName);
 var selected_list='';

 if (elem) {

	 for (var i=0; i < elem.length; i++) {
	   if (elem[i].checked == true) {
		  var cur_id = elem[i].value;
		  if(selected_list.length > 0) {
			  selected_list = selected_list+ ","+elem[i].value;
			  if ($("blog_pass_"+cur_id).value != $("blog_pass_"+cur_id).defaultValue ) {
				  selected_pass = selected_pass+ ","+ $("blog_pass_"+cur_id).value;
			  } else {
				  selected_pass = selected_pass+ ", ";
			  }
		  } else {
			  selected_list = elem[i].value;
			  if ($("blog_pass_"+cur_id).value != $("blog_pass_"+cur_id).defaultValue ) {
				  selected_pass = $("blog_pass_"+cur_id).value;
			  } else {
				  selected_pass = " ";
			  }
		  }
	   }
	}
 }

  return selected_list;
}

// ------
function set_lang(language){

  	Element.show($('loading_bar'));
	var opts = [];
	opts[opts.length] = 'process=language';
	opts[opts.length] = 'lang='+language;
	var ret = synch_query(opts);
	Element.hide($('loading_bar'));
	window.location.reload();
	return false;
}

// ------
function logout(){

   	Element.show($('loading_bar'));

	var opts = []; 
	opts[opts.length] = 'process=logout';
	var aj = new Ajax.Request('./process.php', {
		method: 'post',
		parameters: opts.implode('&'),
		onSuccess: function(o){
			try {
				var ret = o.responseText;
				window.location.href='./index.php';
			}
			catch(e){
				alert_msg(e);
			}
	}});

	Element.hide($('loading_bar'));
	return false;
}

// ------
function alert_msg(msg_value){
	alert(msg_value);
}


// ------
function enable_toolbox(name) {
    //Enabled toolbox menus
	var images = document.getElementsByName(name+'_img');
	for(var x=0; x< images.length; x++){
        $(images[x]).src = '/images/'+$(images[x]).id+'.gif';
    }

	var links = document.getElementsByName(name+'_link');
	for(var x=0; x< links.length; x++){
        $(links[x]).className = 'link_tools';
		enableLink(links[x]);
    }

}

// ------
function disable_toolbox(name) {

	//Disabled toolbox menus
	var images = document.getElementsByName(name+'_img');
	for(var x=0; x< images.length; x++){
        $(images[x]).src = '/images/'+$(images[x]).id+'_d.gif';
    }

	var links = document.getElementsByName(name+'_link');;
	for(var x=0; x< links.length; x++){
		if ($(links[x]).className !='link_tools_d') {
    	    $(links[x]).className ='link_tools_d';
		disableLink(links[x]);
    }
    }

}

// ---------------------------------------------------
function modal_view(url, message, button_title, button_func){

	$show("modal_div");
	$show("header_simtrans");

	if(url){
	$ld(url,'modal_message');
	} else {
	$('modal_message').innerHTML =  message;
	}


	if(button_title) $("button_close").value=button_title;

	switch(button_func){

	 case "1":
		enable_toolbox('toolbox');
	 break;

	 default:
	 break;
	}


	return false;
}

function modal_hide(next_function){

	eval(next_function);

	$hide('header_simtrans');
	$hide("modal_div");
	$('modal_message').innerHTML="";

	return false;
}

// ---------------------------------------------------
function show_modal_window(url, title_text) {

	$show("header_simtrans");
	$show("modal_window");

	$ld(url,'modal_inner');
	$('modal_window_header').innerHTML = title_text;

	return false;

}

function hide_modal_window(){

	$hide('header_simtrans');
	$hide("modal_window");
	$('modal_inner').innerHTML="";
	$('modal_window_header').innerHTML="";

	return false;
}



//------
function show_content(c_type) {
	if (imageDiv) {
		cancel_operation();
	}
	$('left_block').innerHTML='';

	if ($('content_block')) {
		$ld('/inc_content.php?type='+c_type, 'content_block');
	} else {
		if (c_type == 'index') {
			window.location = USER_MAINPAGE;
		} else {
			$ld('/inc_content.php?type='+c_type, 'main_block');
		}
	}
	return true;
}


// ------
function disableLink (link) {
//     if (link.onclick)
     if (!link.disabled)
          link.oldOnClick = link.onclick;
     link.onclick = function(){ return false; };
     link.disabled = true;

}

function enableLink (link) {
     link.disabled = false;
     if (link.oldOnClick) {
          link.onclick = link.oldOnClick
     }
}



/*----------------------------------------------------------------*/
/* Send Ajax Request with the Form data                           */
/*----------------------------------------------------------------*/
function SendFormByAjax(process, form_id, callback_func) {
 	$show('loading_bar');
	var aj = new Ajax.Request('/process.php?process='+process, {
		method: 'post',
		parameters: Form.serialize(form_id),
		onSuccess: function(o){
			callback_func(o.responseText);
		 	$hide('loading_bar');
		},
    	onFailure: function(o) {
        	alert('Error ' + o.status); // + o.statusText
	 		$hide('loading_bar');
    	}
	});

}


function SendRequestByAjax(point, params, callback_func) {
 	$show('loading_bar');

	if (params.constructor==Array) {
		var parameters = params.implode('&');
	} else {
        var parameters = params;
	}
	var aj = new Ajax.Request(point, {
		method: 'post',
		parameters: parameters,
		onSuccess: function(o){
			$hide('loading_bar');
			callback_func(o.responseText);
		 	
		},
    	onFailure: function(o) {
	    	$hide('loading_bar');
        	alert('Error ' + o.status); // + o.statusText
    	}
	});
}

function get_lang_value(name) {
	lang = getCookie('lang');
	if (lang_cache[lang] == undefined)
		lang_cache[lang] = [];
	if (lang_cache[lang][name] != undefined)
		return lang_cache[lang][name]; 
	
     Element.show('loading_bar');
     var point = 'process.php';
     var params = [];
     var ret_arr;
     params['0'] = 'process=language';
     params['1'] = 'name='+name;
   	 ret_arr = synch_query(params);
	 
	 $hide('loading_bar');
	 	lang_cache[lang][name] = ret_arr.msg; 
     return ret_arr.msg;

}

function synch_query(param) {
     $show('loading_bar');
     var point = '/process.php';
     var ret_arr;
     var aj = new Ajax.Request(point, {
          method: 'post',
          parameters: param.implode('&'),
          asynchronous:false,
          onSuccess: function(o){
                    Element.hide('loading_bar');
               		var text = o.responseText.parseJSON();
               		ret_arr = text;
          },
         onFailure: function(o) {
             		Element.hide('loading_bar');
             		alert('Error ' + o.status); // + o.statusText
             		ret_arr = 'error';
         }
     });
     $hide('loading_bar');
     return ret_arr;

}

function show_details(unit_id){
	sb_load('unit_details',unit_id);
}
function show_links(unit_id){
	sb_load('unit_links',unit_id);
}


function sb_load(what, params){
	if (current_page==what)
		return;
	
	switch (what){
		case 'user_photos':
		$synch_ld('inc_albums.php','left_block');
		$synch_ld('inc_album_photos.php','main_block');
		// open_albums_tab();
		break;

		case 'unit_list':
			if(params!=undefined) {
				genre_id = '?genre_id='+params;
				$synch_ld('inc_unit_list.php?pg='+params,'main_block');
			} else {
				$synch_ld('inc_unit_list.php','main_block');
			}	
		break;

		case 'unit_list_genre':
			if(params!=undefined) {
				genre_id = '?genre_id='+params+'&show=1';
				$synch_ld('inc_unit_list.php'+genre_id,'main_block');
			}	
		break;

		case 'unit_links':
			if(params!=undefined) {
				unit_id = '?unit_id='+params;
				$synch_ld('inc_unit_links.php'+unit_id,'main_block');
			} 	
		break;		
		case 'unit_details':
			if(params!=undefined) {
				unit_id = '?unit_id='+params;
				$synch_ld('inc_unit_details.php'+unit_id,'main_block');
			} 	
		break;				
		
		case 'friends':
//		$ld('inc_friends.php','left_block');
		$synch_ld('inc_manage_friends.php','left_block');
		$synch_ld('inc_friends.php','main_block');
		break;
		
		case 'messages':
		break;

		case 'sideblogs':
		var blog_id = '';
		if(params!=undefined)
			blog_id = '?id='+params;
		
		$synch_ld('inc_sideblogs.php','left_block');
		$synch_ld('inc_sideposts.php'+blog_id,'main_block');

		break;
		
		case 'user_profile':
		$('left_block').innerHTML='';
		$synch_ld('inc_profile.php','main_block');
		break;
		
		case 'user_account':
		$('left_block').innerHTML='';
		$synch_ld('inc_account.php','main_block');
		break;
		current_page = what;

	}
}

function visible(id){
	$(id).style.visibility==''
}
function invisible(id){
	$(id).style.visibility='hidden'
}

function activateEditor(id) {
    activeEditors[activeEditors.length] = id
    toggleEditor(id)
}

function deactivateEditors() {
	    for(x=0;x<activeEditors.length;x++) {
	       if($(activeEditors[x])) { toggleEditor(activeEditors[x]) }
	    }
	    activeEditors.length = 0
}

// functions
function toggleEditor(id,mode) {
    var elm = document.getElementById(id);
//	alert(id);
    if (tinyMCE.getInstanceById(id) == null)
        tinyMCE.execCommand('mceAddControl', false, id);
    else
        tinyMCE.execCommand('mceRemoveControl', false, id);
}

function ajax_error(obj, place_id, container_id){
	if (obj.error != undefined && obj.error_desc != undefined) {
		if (obj.error != 0) {
			if (place_id == undefined || container_id == undefined) {
				var msg = '<div class="div_error">' + obj.error_desc + '</div>';
				modal_view('', msg);
			}
			else {
				Element.show(container_id);
				$(place_id).innerHTML = obj.error_desc;
			}
			return true;
		}
		else{
				if (container_id != undefined)Element.hide(container_id);
				if (place_id != undefined)$(place_id).innerHTML = '';
			return false;
		}
	}
	else if (typeof(obj)=='string'){
		if (place_id == undefined || container_id == undefined) {
			var msg = '<div class="div_error">' + obj + '</div>';
			modal_view('', msg);
		}
		else {
			Element.show(container_id);
			$(place_id).innerHTML = obj;
		}
			return true;
	}
	else {
			return true;
		}
}

function $show(element) {
//alert(element);
	return $(element).style.display = '';
}

function $hide(element) {
	return $(element).style.display = 'none';
}

function $toggle(element) {
    element = $(element);
	if (element.style.display == 'none') {
		return $show(element);
	} else {
		return $hide(element);
	}		
}
function $show_child(element) {
	new Effect.BlindDown(element);
	return;
}

function $hide_child(element) {
	new Effect.BlindUp(element);
	return;
}

function $toggle_child(element) {
    element = $(element);
	if (element.style.display == 'none') {
		return $show_child(element);
	} else {
		return $hide_child(element);
	}		
}