var baseDir = '/zsm2/UI/images/';
var baseURL = '/zsm2/';
var timeoutID = null;

var ActiveTabs =  Class.create();
ActiveTabs.prototype = {
	initialize: function(options) {
		var self=this;
		this._type 		= (options.type) ? options.type : 'text';
		this._values 	= (options.type) ? options.type : 'text';
		return this;
	}
};



function setVarible(el) {
	//alert('dir');
	var element = $$('#'+el+' select.select_once');
	var var_type = element[0].options[element[0].selectedIndex].value;
	
	$$('#'+el+' .text_box')[0].hide();
	$$('#'+el+' .select_box')[0].hide();
	
	
	if(var_type == 'text'){
		$$('#'+el+' .text_box')[0].show();
	} else {
		$$('#'+el+' .select_box')[0].show();
	}
	
	//alert(element.options[element.selectedIndex].value)
}

function randm(){
	return Math.random();
}

function addConfig() {
	log.info('addConfig Started - ' + randm());
	
	var tmp_data = $('hiddenConf').innerHTML;
	var rand = randm();
	rand = rand.toString();
	log.info('Random Code : ' + rand);
	var new_id = 'variable_' + rand.replace('.', '');
	tmp_data = tmp_data.replace(/variable_1/gi, new_id);
	$('extra_conf').appendChild(
		new Element('div', {'id': new_id, 'class':"variable_container"}).update(tmp_data));
	log.info('Config Added : '+new_id);
	$(new_id).scrollTo();
}

function addItem(el){
	var select_box = $$('#'+el+' div.select_box')[0];
	var select_input = $$('#'+el+' div.select_input')[0];
	var extra_select = $$('#'+el+' div.extra_select')[0];
	
	extra_select.appendChild(new Element('div').update(select_input.innerHTML+' <span onclick="removeItem(this, \''+el+'\')">remove</span>'));
	var element = $$('#'+el+' input.optionscount')[0];
	element.value = parseInt(element.value) + 1;
	log.warn('New Value : ' + element.value);
	//var var_type = element[0].options[element[0].selectedIndex].value;
}
function removeItem(el, els){
	$(el.parentNode).remove();
	var element = $$('#'+els+' input.optionscount')[0];
	element.value = parseInt(element.value) - 1;
	log.warn('New Value : ' + element.value);
}



window.confirmed = function(text){
	return confirm(text);
};
function rand(){
	return Math.random();
}
function requestFriend(id){
	if(confirmed("Сигурен ли си")){
		alert("DA");
	} else {
		alert("NE");
	}
	return false;
}

function postComment(id) {
	$('post-button').hide();
	$('img-spinner').show();
	$('comment_form').action = $('comment_form').action.replace('profile','ajax');
	$('comment_form').request({
		onSuccess: function(transport){ 
			var data = transport.responseText.evalJSON();
			if(data.error) {
				MsgBox.show(data.msgext);
				$('capcha_image').update(data.new_captcha);
			} else if (data.success) {
				MsgBox.show(data.msgext);
				loadComments(data.id);
			}
			$('img-spinner').hide();
			$('post-button').show();
		}
	});
}

function postImgComment(id) {
	$('post-img-comment').hide();
	$('img-img-spinner').show();
	$('PicCommentPost').action = $('PicCommentPost').action.replace('_pic_','');
	$('PicCommentPost').request({
		onSuccess: function(transport){ 
			var data = transport.responseText.evalJSON();
			if(data.error) {
				MsgBox.show(data.msgext);
			} else if (data.success) {
				MsgBox.show(data.msgext);
				//loadComments(data.id);
			}
			$('img-img-spinner').hide();
			$('post-img-comment').show();
		}
	});
}

function rmimage(id) {
	if(confirmed("Изкате ли да изтриете тази снимка?")){
		new Ajax.Request(baseURL+'ajax/rmimage/'+id+'/?'+rand() , {
		  method: 'get',
		  onSuccess: function(transport) {
			var data = transport.responseText.evalJSON();
			if(data.error){
				MsgBox.show(data.msgext);
			}else if (data.success){
				MsgBox.show(data.msgext);
				//$('picture_box_'+id).remove();
				$j("#picture_box_"+id).fadeOut("normal");
			}
		  }
	});
	
	}

}


function loadComments(id) {
	var data = _loadComments(id);
	$('comments_list').update(data);
}
function _loadComments(id) {
	new Ajax.Request(baseURL+'ajax/comments/'+id+'/?'+rand() , {
		  method: 'get',
		  onSuccess: function(transport) {
			var data = transport.responseText;
			return data;
		  }
	});
}
function rateDown(id) {
	new Ajax.Request(baseURL+'ajax/rate/'+id+'/1'+'/?'+rand() , {
		  method: 'get',
		  onSuccess: function(transport) {
			var data = transport.responseText.evalJSON();
			if(data.error){
				MsgBox.show(data.msgext);
			}else if (data.success){
				MsgBox.show('Оценката ви беше записана');
			}
		  }
	});

}

function rateUp(id) {
	new Ajax.Request(baseURL+'ajax/rate/'+id+'/2'+'/?'+rand() , {
		  method: 'get',
		  onSuccess: function(transport) {
			var data = transport.responseText.evalJSON();
			if(data.error){
				MsgBox.show(data.msgext);
			}else if (data.success){
				MsgBox.show('Оценката ви беше записана');
			}
		  }
	});
}

function addFav() {
	MsgBox.show('Потребителят е добавен в любими');
}
function browseList(){
	$('browse_container').className = 'list_view';
	$$('#grid a')[0].className = '';
	$$('#list a')[0].className = 'active';
}
function browseGrid(){
	$('browse_container').className = 'grid_view';
	$$('#grid a')[0].className = 'active';
	$$('#list a')[0].className = '';
}
function showExtraMenu (element, id, username) {
	var position 					= $(element).cumulativeOffset();
	$('menu-options').update('<ul><li><a href="'+baseURL+'/mailbox/compose/'+username+'">Прати съобщение</a></li><li><a href="#dir">Приятелство</a></li><li><a href="#dir">Добави в Любими</a></li><li><a href="'+baseURL+'/profile/'+id+'">Разгледай профила</a></li></ul>');
	$('menu-options').style.top 	= (position.top + $(element).offsetHeight) + 'px';
	$('menu-options').style.left 	= (position.left - 120) + 'px';
	$j("#menu-options").fadeIn("normal");
}

document.observe("click", function(event) {
		if(!$("menu-options"))
		return;
		if(!$("menu-options") || $("menu-options").style.display == 'none') 
			return;
		if(Event.element(event) != $('menu-options') 
			&& Event.element(event).parentNode != $('menu-options') 
			&& Event.element(event).parentNode.parentNode != $('menu-options') 
			&& Event.element(event).parentNode.parentNode.parentNode != $('menu-options')
			&& Event.element(event).className != 'options_image' ) {
				$("menu-options").hide();
		}
	
});

var MsgBox = {
  hide: function(aMessage) {
    if($('msg-box-container'))
		document.getElementsByTagName('body')[0].removeChild($('msg-box-container'));
    delete this.timeoutID;
  },

  show: function(txt) {
    this.cancel();
    var self = this;
	
	var y = document.viewport.getScrollOffsets();
	var msg_body = new Element('div', { 'id': 'msg-box-container', 'style':'display:none; top:'+(y.top + 20)+'px;'}).update('<p id="msg-box">'+txt+'</p>');
	document.getElementsByTagName('body')[0].appendChild(msg_body);
	msg_body.onclick = function (){
		self.hideMsgBoxSlow();
	};
	$j("#msg-box-container").fadeIn("normal");
	//window.setTimeout(hideMsgBoxSlow, 3000);
	
	
    this.timeoutID = window.setTimeout(function() {self.hideMsgBoxSlow();}, 3000);
  },
	hideMsgBoxSlow : function (){
	if($('msg-box-container'))
		$j("#msg-box-container").fadeOut("normal", self.hide);
	},
  cancel: function() {
    if(typeof this.timeoutID == "number") {
      window.clearTimeout(this.timeoutID);
      delete this.timeoutID;
    }
  }
};


/*
* Photo Gallery
*/
var PhotoGallery = {
	picture_container : null,
	global_container : null,
	comments_container :null,
	create : function () {
		this.global_container = new Element('div', { 'id': 'picture_gallery'}).update('<div id="gallery_close" onclick="PhotoGallery.close()"><img src="'+baseDir+'widget_close.png" /></div>');
		this.picture_container = new Element('div', { 'id': 'picture_container'});
		var comments_main_container = new Element('div', { 'id': 'comments_container'});
		this.comments_container = new Element('div', { 'id': 'picture_comments'});
	
		this.global_container.appendChild(this.picture_container);
		this.global_container.appendChild(comments_main_container);
		this.global_container.appendChild(this.comments_container);
		
		
		this.global_container.appendChild(new Element('div', {'id' : 'post_picture_comment'} ).update('Твоят коментар за тази снимка:<br /><form id="PicCommentPost" method="post" onsubmit="return false;" action="'+baseURL+'ajax/postimgcomment"><input type="text" style="width: 200px;" name="MyComment" class="input" /> <br /><input type="submit" onclick="postImgComment();" value="Запиши" class="btn_regular" id="post-img-comment" /><img src="'+baseURL+'UI/images/spinner_32px_ffffff.gif" id="img-img-spinner" style="display: none;" /></form>'));
		$("images_gallery_").appendChild(this.global_container);
		$j("#images_gallery_").fadeIn("normal");
	},
	show : function(id){
		if(!this.global_container)
			this.create();
		var self = this;
		var img_id = (id.id) ? id.id : id;
		this.picture_container.update('');
		window.location.href = "#image?"+img_id;
		$('images_container').scrollTo();
		$j("#images_gallery_").fadeIn("normal");
		new Ajax.Request(baseURL+'ajax/getImage/'+img_id , {
				  method: 'get',
				  onSuccess: function(transport) {
					var data = transport.responseText.evalJSON();
					if(data.error){
						//notice.update(data.error).show().setStyle({ background: '#fdd' });
						self.close();
					}else if (data.success){
						
						if(data.image.width > data.image.height) {
							var ratio = data.image.width / data.image.height;
							var image_width = 420;
							var image_height = 420 / ratio;
							var margin_left = 0;
							var margin_top = 210 - (image_height / 2);
						} else {
							var ratio = data.image.height / data.image.width;
							var image_height = 420;
							var image_width = 420 / ratio;
							var margin_left = 210 - (image_width / 2);
							var margin_top = 0;
						}
						$('PicCommentPost').action = baseURL+'ajax/postimgcomment/'+img_id;
						self.picture_container.update('<a href="'+data.image.src+'" onclick="showLightbox(this); return false;"><img src="'+data.image.src+'" style="width: '+image_width+'+px; height: '+image_height+'px; margin: '+margin_top+'px 0px 0px '+margin_left+'px;" /></a>');
					}
				  }
			});		
		
		return false;
	},
	close : function () {
		$j("#images_gallery_").fadeOut("normal", function(){ window.location.href = "#images_container"; });
		
	},
	loadImgData : function () {
		
	}
}


function initPhotoGalery(){
	if (!document.getElementsByTagName){ return; }
	var anchors = document.getElementsByTagName("a");
	
	for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];

		if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "lightbox")){
			anchor.onclick = function () {PhotoGallery.show(this); return false;}
		}
	}
	//alert("done #"+i);
}
function addLoadEvent(func)
{	
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
    	window.onload = func;
	} else {
		window.onload = function(){
		oldonload();
		func();
		}
	}

}

function checkJSURLPic() {
	var items = parseUri(document.location.href);
	if(items.anchor.match(/image\?_pic_/)){
		var tmp = items.anchor.split('?');
		PhotoGallery.show(tmp[1]);
	}
}


function getURL(include_query){
	if(!include_query){
		var dl = document.location.href.split("?");
		return dl[0];
	} else
		return document.location;
}

function sort_results(sortby)
{
	document.location.href = getURL() + '?sortby=' + sortby;
}

function setMsgReceiver(user){
	$('txtTo').value = user;
	return false;
}

function attachDetails(){
	var elements = document.getElementsByClassName('hbox');
	for(var i = 0; i < elements.length; i++){
		elements[i].getElementsByTagName('img')[0].onmouseover = showDetails; 
	}
}

function showDetails(e){
	if (!e) var e = window.event;
	var eid = (window.event) ? e.srcElement : e.target;
	hideDetails();
	if($(eid).hasClassName('hbox'))
		var ourElement = eid;
	else if($(eid.parentNode).hasClassName('hbox'))
		var ourElement = eid.parentNode;
	else if($(eid.parentNode.parentNode).hasClassName('hbox'))
		var ourElement = eid.parentNode.parentNode;
	if(ourElement) {
		var position = $(ourElement).cumulativeOffset();
		var Details = new Element('div', {"id":"user-detail-box", 
			"style": "position: absolute; top:"+(position.top - 4)+"px; left:"+(position.left - 4)+"px;",
			"class": ourElement.className.replace("hbox", "sbox")});
		Details.onmouseout = hideDetails;
		Details.innerHTML = ourElement.innerHTML;
		//Details.getElementsByTagName('img')[0].onmouseout = hideDetails;
		document.body.appendChild(Details);
	}
}

function hideDetails(){
	if($('user-detail-box')) document.body.removeChild($('user-detail-box'));
}

var EmotSettings = {
	global : [
		[':)', baseDir+'emots/smile.gif'],
	]
};

var Emoticons = Class.create();
Emoticons.prototype = {
	initialize : function (){
	
	}
};

var Validations = {
	setRegister : function () {
		var self = this;
		$('Username').onblur = function (){
			new Ajax.Request('/CodeFramework/ajax/check_confirm/username/'+$('Username').value , {
				  method: 'get',
				  onSuccess: function(transport) {
				    var notice = $('user_check');
				    if (transport.responseText != '1')
				      $('user_check').update(' Ама не може така').setStyle({ color: '#ff0000' });
				    else
				      $('user_check').update(' Ставa').setStyle({ color: '#379d00' });
				  }
			});
		};
		
	},
	ifUserExists : function(){
		
	}
};

var ToolTipBox = {
	createAccount: function()
	{
		this.AllHide();
		$('txtUsername').onfocus = function(){ 
			ToolTipBox.AllHide(); 
			$('helper_username').show();
		};
		$('txtName').onfocus = function(){ 
			ToolTipBox.AllHide(); 
			$('helper_name').show();
		};
		$('txtEMail').onfocus = function(){ 
			ToolTipBox.AllHide(); 
			$('helper_mail').show();
		};
		
	},
	AllHide: function () {
		var boxes = $('help_reg').getElementsByClassName('helper');
		
		boxes.each(function(item) {
			item.hide();
		});
		
	}
	
};



/*
	parseUri 1.2.1
	(c) 2007 Steven Levithan <stevenlevithan.com>
	MIT License
*/

function parseUri (str) {
	var	o   = parseUri.options,
		m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
		uri = {},
		i   = 14;

	while (i--) uri[o.key[i]] = m[i] || "";

	uri[o.q.name] = {};
	uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
		if ($1) uri[o.q.name][$1] = $2;
	});

	return uri;
};

parseUri.options = {
	strictMode: false,
	key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
	q:   {
		name:   "queryKey",
		parser: /(?:^|&)([^&=]*)=?([^&]*)/g
	},
	parser: {
		strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
		loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
	}
};