/**
 * JS functions
 * @author Mihai Bojin
 */


/**
 * 	Get selected text from any source in the current window
 */
function getSelText()
{
    var txt = '';
    if (window.getSelection) {
        txt = window.getSelection();
    }
    else if (document.getSelection)
    {
        txt = document.getSelection();
    }
    else if (document.selection)
    {
        txt = document.selection.createRange().text;
    }
    else return false;


    txt = txt.toString();
    txt2 = txt.replace(/^\s+|\s+$/,'');

    if ( txt2.length > 0 )window.open('http://dexonline.ro/search.php?cuv='+escape(txt),'dictionar','width=800,height=600,left=0,top=100,screenX=0,screenY=100');
    else return false;
}


/**
	ToolTips EMOTICOANE
*/

var tooltipShown = false;

/**
 * Finds the current X position of the cursor
 */
function xstooltip_findPosX(obj)
{
  var curleft = 0;
  if (obj.offsetParent)
  {
    while (obj.offsetParent)
        {
            curleft += obj.offsetLeft
            obj = obj.offsetParent;
        }
    }
    else if (obj.x)
        curleft += obj.x;
    return curleft;
}


/**
 * Finds the current Y position of the cursor
 */
function xstooltip_findPosY(obj)
{
    var curtop = 0;
    if (obj.offsetParent)
    {
        while (obj.offsetParent)
        {
            curtop += obj.offsetTop
            obj = obj.offsetParent;
        }
    }
    else if (obj.y)
        curtop += obj.y;
    return curtop;
}


/**
 * Shows the tooltip
 */
function xstooltip_show(tooltipId, parentId, posX, posY)
{
    it = document.getElementById(tooltipId);

    if ((it.style.top == '' || it.style.top == 0)
        && (it.style.left == '' || it.style.left == 0))
    {
        // need to fixate default size (MSIE problem)
        it.style.width = it.offsetWidth + 'px';
        it.style.height = it.offsetHeight + 'px';

        img = document.getElementById(parentId);

        // if tooltip is too wide, shift left to be within parent
        if (posX + it.offsetWidth > img.offsetWidth) posX = img.offsetWidth - it.offsetWidth;
        if (posX < 0 ) posX = 0;

        x = xstooltip_findPosX(img) + posX;
        y = xstooltip_findPosY(img) + posY;

        //it.style.top = y + 'px';
        //it.style.left = x + 'px';
    }

    it.style.visibility = 'visible';
}

/**
 * Hides the tooltip
 */
function xstooltip_hide(id)
{
    it = document.getElementById(id);
    it.style.visibility = 'hidden';
}

/**
 * Show tooltip with the id=tooltip_123 (emoticon div)
 */
function showtooltip() {
	var idname = 'tooltip_123';

    it = document.getElementById(idname);

	if ( it.style.visibility == 'hidden' ) {
		xstooltip_show('tooltip_123', 'mesaj', 40, 49);
	}
	else {
		xstooltip_hide('tooltip_123');
	}
	return false;
}






/**
 * Adds an emoticon to a textbox called commtext
 */
function addEmoticon(str) {
	var emote = document.getElementById('commtext');
	emote.value += str;
}

/**
 * Adds [b][/b] tags 
 */
function addBold(containerId) {
	var emote = document.getElementById(containerId);

	var selectedText = emote.options[emote.selectedIndex].value;
	if ( selectedText ) {
		//var name = tFrom.options[tFrom.selectedIndex].text;
		x = new String("[b]" + selectedText + "[/b]");
		x = x.replace(/\'/g, "\"");
		alert(x);
		selectedText.value = selectedText.value + x;
	}
    else {
		emote.value += '[b][/b]';
    }

}

/**
 * Adds [i][/i] tags
 */
function addItalic(containerId) {
	var emote = document.getElementById(containerId);
	emote.value += '[i][/i]';
}


/**
 * Adds tags to the comment textarea
 */
function addArticleCode(t,srcText){
	//crappy browser sniffer
	var isFF = false;
	var textselected = false;
	if(navigator.userAgent.toLowerCase().indexOf("firefox") > 0) {
		isFF = true;
	}

	var myArea = document.getElementById("commtext");
	var begin,selection,end;

	if (isFF == true){

		if (myArea.selectionStart!= undefined) {
			begin = myArea.value.substr(0, myArea.selectionStart);
			selection = myArea.value.substr(myArea.selectionStart, myArea.selectionEnd - myArea.selectionStart);
			end = myArea.value.substr(myArea.selectionEnd);

			if (selection.length > 0){
				textselected = true;
			}
		}
	}
	else{
		if (window.getSelection){
			selection = window.getSelection();
		}
		else if (document.getSelection) {
			selection = document.getSelection();
		}
		else if (document.selection) {
			selection = document.selection.createRange().text;
		}

		var startPos = myArea.value.indexOf(selection);

		if (startPos!= 0){

			var endPos = myArea.value.indexOf(selection) + selection.length;
			begin = myArea.value.substr(0,startPos);
			end = myArea.value.substr(endPos, myArea.value.length);
			textselected = true;
		}
	}

	switch (t){
		case "bold":
		startTag = "[xb]";
		endTag = "[/xb]";
		break;

		case "italic":
		startTag = "[xi]";
		endTag = "[/xi]";
		break;

		case "link":
		startTag = "[xlink]";
		endTag = "[/xlink]";
		break;

		case "video":
		startTag = "[xvideo]";
		endTag = "[/xvideo]\n";
		break;

		case "img":
		startTag = "[ximg]";
		endTag = "[/ximg]\n";
		break;

		case "quote":
		startTag = "[xquote]";
		endTag = "[/xquote]\n\n";
		break;

	}

	if(textselected == true) {
		if ( t == "quote" ) {
			selection = '';
		}
		myArea.value = begin + startTag + selection + endTag + end;
		myArea.focus();
	}
	else {
		addVal = '';
		if ( t == "quote" ) {
			var addVal = document.getElementById(srcText).innerHTML;
			var userName = document.getElementById('user_'+srcText).innerHTML;
			addVal = "[user]"+userName+"[/user]"+addVal;
		}
		else if ( t == "link" ) {
			var addVal = prompt("Introduceti linkul");
		}
		else if ( t == "img" ) {
			var addVal = prompt("Introduceti Linkul catre imagine");
		}
		else if ( t == "video" ) {
			var addVal = prompt("Introduceti Linkul embed exact cum il extrageti din site-uri gen YouTube");
		}

		if ( addVal != null ) {
			myArea.value = begin + startTag + addVal + endTag + end;
			myArea.focus();
		}
//		alert("No text selected.\nNo tags added");
	}
	return false;
}

var stardefault = 0;
var ratingText = new Array(5);
ratingText[0] = '';
ratingText[1] = 'Foarte slab';
ratingText[2] = 'Mediocru';
ratingText[3] = 'Bun';
ratingText[4] = 'Foarte bun';
ratingText[5] = 'Excelent';

var ratingReq = getXmlHttpRequestObject();
var ratingReplaceReq = getXmlHttpRequestObject();
var globalSiteHref;

/**
 * Swaps star images depending on which star the users mouseovers
 */
function replaceStarsAJAX( siteHref, url, targetid, starid, cnt, chgDefault ) {
	if ( !siteHref ) siteHref = '/';
	globalSiteHref = siteHref;
	
	var stars= new Array(5);
	for ( i=0;i<5;i++) {
		stars[i] = document.getElementById(starid+(i+1));
	}
	//if ( !cnt ) cnt = 0;

	CursorOver = new Image();
	CursorOver.src = url+"star.png";
	CursorOff = new Image();
	CursorOff.src = url+"star_.png";

	for( i=0;i<cnt;i++ ) stars[i].src = CursorOver.src;
	for( i=cnt;i<5;i++ ) stars[i].src = CursorOff.src;
	//stars[cnt-1].title = ratingText[cnt];

	var target = document.getElementById(targetid);
	if ( target != null ) target.value = cnt;

	if ( chgDefault != null ) {
		stardefault = chgDefault;

		document.getElementById('commentratingshow').innerHTML=ratingText[chgDefault];
//		alert('Nota a fost adaugata!');
//		document.getElementById('rateit').submit();



		if (ratingReq.readyState == 4 || ratingReq.readyState == 0) {
//			var str = escape(document.getElementById('searchfor').value);

			userId = document.getElementById('commentuserid')?document.getElementById('commentuserid').value:0;
			artId = document.getElementById('commentartid')?document.getElementById('commentartid').value:0;
			convId = document.getElementById('commentconvid')?document.getElementById('commentconvid').value:0;
			freshId = document.getElementById('commentfreshid')?document.getElementById('commentfreshid').value:0;

			ratingReq.open("GET", siteHref+'/data.php?what=do_rating&value=' + chgDefault +
			'&uid=' + userId +
			'&aid=' + artId +
			'&cid=' + convId +
			'&fid=' + freshId 				
			, true);
			ratingReq.onreadystatechange = alertRatingOk;
			ratingReq.send(null);
		}		
	}
}

var starStatic = new Array(5);
starStatic[0] = 0;
starStatic[1] = 0;
starStatic[2] = 0;
starStatic[3] = 0;
starStatic[4] = 0;

function replaceStarsStatic( siteHref, url, targetid, starid, cnt, chgDefault, instanceId ) {
	if ( !siteHref ) siteHref = '/';
	globalSiteHref = siteHref;
	
	//if ( instanceId == null ) return;
	var target = document.getElementById(targetid);
	
		var stars= new Array(5);
		for ( i=0;i<5;i++) {
			stars[i] = document.getElementById( targetid+'_'+starid+(i+1) );
		}
	
		CursorOver = new Image();
		CursorOver.src = url+"star.png";
		CursorOff = new Image();
		CursorOff.src = url+"star_.png";
	
		for( i=0;i<cnt;i++ ) stars[i].src = CursorOver.src;
		for( i=cnt;i<5;i++ ) stars[i].src = CursorOff.src;
		document.getElementById( targetid+'show').innerHTML=ratingText[cnt];
		//stars[cnt-1].title = ratingText[cnt];
	
		if ( target != null ) target.value = cnt;
	

	if ( chgDefault > 0 ) {
		starStatic[instanceId] = chgDefault;
		document.getElementById( targetid+'show').innerHTML=ratingText[chgDefault];
	}

}

function setDefaultStarStatic( targetId, instanceId ) {
	var target = document.getElementById(targetId);
	var cnt = target.value;
	document.getElementById( targetId+'show').innerHTML=ratingText[cnt];
	starStatic[instanceId] = cnt;
}



function alertRatingOk() 
{
	siteHref = globalSiteHref;
	if (ratingReq.readyState == 4) {
//		alert( ratingReq.responseText );
		
		if (ratingReplaceReq.readyState == 4 || ratingReplaceReq.readyState == 0) {
			
			userId = document.getElementById('commentuserid')?document.getElementById('commentuserid').value:0;
			artId = document.getElementById('commentartid')?document.getElementById('commentartid').value:0;
			convId = document.getElementById('commentconvid')?document.getElementById('commentconvid').value:0;
			freshId = document.getElementById('commentfreshid')?document.getElementById('commentfreshid').value:0;
			
			ratingReplaceReq.open("GET", siteHref+'/data.php?what=reload_rating' + 
				'&uid=' + userId +
				'&aid=' + artId +
				'&cid=' + convId +
				'&fid=' + freshId 				
			, true);
			ratingReplaceReq.onreadystatechange = replaceAverageValueAJAX;
			ratingReplaceReq.send(null);
			
		}
		alert('Nota a fost adaugata!');
		
	}
}


function replaceAverageValueAJAX () {
	
/*	artId = document.getElementById('commentartid').value;
	convId = document.getElementById('commentconvid').value;
	freshId = document.getElementById('commentfreshid').value;
*/	
	if (ratingReplaceReq.readyState == 4 ) {
		ratingDIV = document.getElementById('ratingAVG');
		ratingDIV.innerHTML = ratingReplaceReq.responseText;
	}
}



function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("Aveti nevoie de javascript pentru a folosi aceasta functie!");
	}
}

/** 
 *	Suggests a text in the search box
 */
var searchReq = getXmlHttpRequestObject();

function searchSuggest( siteHref ) {
	if ( !siteHref ) siteHref = '.';
	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		var str = escape(document.getElementById('searchfor').value);
		searchReq.open("GET", siteHref+'/data.php?what=search_suggest&search=' + str, true);
		searchReq.onreadystatechange = handleSearchSuggest; 
		searchReq.send(null);
	}	
}

/** 
 *	Called when the AJAX response is returned
 */
	
function handleSearchSuggest() {
	if (searchReq.readyState == 4) {
		var ss = document.getElementById('search_suggest')
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		var first = str[0].replace(/^\s+|\s+$/g,"");
		var searchDivStyle = eval("document.getElementById('search_suggest').style");
		var searchDivClose = eval("document.getElementById('closeSuggestions').style");
		
	
		if ( first.length == 0 ) {
			//document.getElementById('search_suggest').style.visibility='hidden';
			//document.all.search_suggest.style.visibility = "hidden";
			searchDivStyle.visibility = "hidden";
			searchDivClose.visibility = "hidden";
		}
		else {
			if ( str.length > 15 ) {
				searchDivStyle.height = "286px";
			}
			else {
				searchDivStyle.height = "auto";				
			}
			
			for(i=0; i < str.length - 1; i++) {
				//Build our element string.  This is cleaner using the DOM, but
				//IE doesn't support dynamically added attributes.
				//if ( str[i] != "ARTICOLE" ) {
					var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
					suggest += 'onmouseout="javascript:suggestOut(this);" ';
					suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
					suggest += 'class="suggest_link">' + str[i] + '</div>';
					ss.innerHTML += suggest;
				//}
				/*else {
					var suggest = '<div class="suggest_link_category">';
					suggest += str[i] + '</div>';
					ss.innerHTML += suggest;
				}*/
			}
			//document.all.search_suggest.style.visibility = "visible";
			//document.getElementById('search_suggest').style.visibility = 'visible';
			searchDivStyle.visibility = "visible";
			searchDivClose.visibility = "visible";
		}
	}
}

//Mouse over function
function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
	div_value.className = 'suggest_link';
}

function suggestClose() {
	var searchDivStyle = eval("document.getElementById('search_suggest').style");
	var searchDivClose = eval("document.getElementById('closeSuggestions').style");	
//	document.getElementById('searchfor').value = '';
	document.getElementById('search_suggest').innerHTML = '';
	searchDivStyle.visibility = "hidden";
	searchDivClose.visibility = "hidden";	
}

//Click function
function setSearch(value) {
	var searchDivStyle = eval("document.getElementById('search_suggest').style");
	var searchDivClose = eval("document.getElementById('closeSuggestions').style");
	
	value = value.replace(/\.\.\./,'');
	document.getElementById('searchfor').value = value;
	document.getElementById('search_suggest').innerHTML = '';
	searchDivStyle.visibility = "hidden";
	searchDivClose.visibility = "hidden";	
}
