function strReplace(s, r, w) {
    return s.split(r).join(w);
}

function strEndsWith(testString, endingString) {
    if (endingString.length > testString.length)
        return false;
    return testString.indexOf(endingString) == (testString.length - endingString.length);
}

function urlencode(str) {
    return strReplace(escape(str), '/', '%2F');
}

function el_addParameter(params, field, value) {
    if (params != undefined && params.length > 0)
        params += "&";
    else
        params = "?";

    value = urlencode(value);
    params += field + "=" + value;
    return params;
}

function el_handleError(message, file, line) {
    var url = "/HTTPHandlers/LogError.ashx";
    var params = "";
    var ignoredFile, i;
    var ignoredFiles = new Array(
                            "xpopup.js",
                            "googleads.g.doubleclick",
                            "fixya.us.intellitxt.com",
                            "translate_c",
                            "74.125.93.132",
                            "blockpage.cgi"
                            );
    var ignoredMessages = new Array(
                            "Error loading script",
                            "Invalid character"
                            );                            

	if(typeof file == 'undefined' || file == null || file.length == 0)
	{
		return;
	}
    for (i = 0; i < ignoredFiles.length; i++) {
        ignoredFile = ignoredFiles[i];
        //if (strEndsWith(file, "/" + ignoredFile))
        if(file.indexOf(ignoredFile) != -1)
            return;
    }
    
    if(typeof message == 'undefined' || message == null || message.length == 0)
	{
		return;
	}
    for (i = 0; i < ignoredMessages.length; i++) {
        ignoredMessage = ignoredMessages[i];
        //if (strEndsWith(file, "/" + ignoredFile))
        if(message.indexOf(ignoredMessage) != -1)
            return;
    }    

    params = el_addParameter(params, "Address", window.location);
    params = el_addParameter(params, "File", file);
    params = el_addParameter(params, "Line", line);
    params = el_addParameter(params, "Message", message);
    params = el_addParameter(params, "Browser", navigator.userAgent);


    var image = document.createElement("img");
    image.setAttribute("src", url + params);
}

function loadScript(jsFile)
{
	document.write('<script type="text/javascript" src="' + jsFile + '"></scr' + 'ipt>'); 
}

function $i()
{
  var elements = new Array();
	var elm = null;
	
  for (var i = 0; i < arguments.length; i++)
	{
    elm = arguments[i];
    if(typeof elm == 'string')
      elm = document.getElementById(elm);

    if(arguments.length == 1)
      return elm;

    elements.push(elm);
  }

  return elements;
}

function toggleVisibilityList()
{
	for(var i=0;i<arguments.length;++i)
	{
		var o = $i(arguments[i]);
		if(null!=o)
			o.style.visibility=(o.style.visibility=="hidden"?"visible":"hidden");
	}
}

function toggleList()
{
	for(var i=0;i<arguments.length;++i)
	{
		var o = $i(arguments[i]);
		if(null!=o)
			o.style.display=(o.style.display=="none"?"block":"none");
	}
}

function hide()
{
	for(var i = 0; i < arguments.length; ++i)
	{
		var o = $i(arguments[i]);
		if(null != o)
			o.style.display = "none";
	}
}

function show()
{
	for(var i=0; i<arguments.length; ++i)
	{
		var o = $i(arguments[i]);
		if(null != o)
			o.style.display = "block";
	}
}

function isVisible(objId)
{
	var o = $i(objId);
	if(null != o)
		return (o.style.display != "none");
	
	return false;	
}

String.prototype.trim = function()
{
	return this.replace(/^\s+|\s+$/g,"");
}

function _check_sp(s)
{
	var r = /\bwww\./gi;
	var r2 = /\bhttp:\/\//gi;

	var a1 = s.match(r2);//r.match(s);
	var a2 = s.match(r);
	
	var a1l = (a1 != null)? a1.length: 0;
	var a2l = (a2 != null)? a2.length: 0;
	
	if(a1l > 2 || a2l > 2) return true;
	return false;
}

function ButtonLink(lid)
{

	var ua      = navigator.userAgent.toLowerCase();
	var isIE    = (ua.indexOf("msie") != -1);
	var isOpera = (ua.indexOf("opera") != -1);
	
	/*if(isOpera)
	{	
		location.href = document.getElementById(lid).href;
		return false;
	}*/
	if(typeof document.getElementById(lid).click != 'undefined' && isIE)
	{
		document.getElementById(lid).click();
		
		return false;
    }
	
	document.getElementById(lid + '_btn').disabled = true;
	return true;
}	

function openNewWindow(url, name, params)
{
	if(undefined==name)
		name = null;
	if(undefined==params || null==params)
		params = 'height=600,width=800,toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes';
	window.open(url, name, params);
}

//prevent Enter (Return) key press in forms (noam)
function noEnter(ev) 
{
	var keynum;
	if(window.event) // IE
	{
		keynum = ev.keyCode;
	}
	else if(ev.which) // Netscape/Firefox/Opera
	{
		keynum = ev.which;
	}
  return !(keynum == 13);   
}

function disableButton(button)
{
	if(button == null) return;
	
	if(typeof button == typeof 'string')
	{
		button = $i(button);
		if(button == null) return;	
	}
	
	button.disabled = true;
	button.className = button.className.replace(/\bg_button\b/, 'g_buttondis');
}

function enableButton(button)
{
	if(button == null) return;
	
	if(typeof button == typeof 'string')
	{
		button = $i(button);
		if(button == null) return;	
	}
	
	button.disabled = false;
	button.className = button.className.replace(/\bg_buttondis\b/, 'g_button');
}

function toggleButton(button)
{
	if(button == null) return;
	
	button.disabled ? enableButton(button) : disableButton(button);
}


function gsbuttonhover(b)
{
	if(b != null)
	{
		if(b.className.indexOf('g_gsbutton') > -1 && b.className.indexOf('g_gsbuttonhover') == -1 && b.className.indexOf('g_gsbuttondis') == -1)
		{
			b.className = b.className.replace('g_gsbutton', 'g_gsbuttonhover');

        }
        if (b.className.indexOf('g_gsbuttonBlue') > -1 && b.className.indexOf('g_gsbuttonhoverBlue') == -1 && b.className.indexOf('g_gsbuttondisBlue') == -1) {
            b.className = b.className.replace('g_gsbuttonBlue', 'g_gsbuttonhoverBlue');
        }
	}
}

function disableButtonGs(button)
{
	if(button == null) return;
	
	if(typeof button == typeof 'string')
	{
		button = $i(button);
		if(button == null) return;	
	}
	
	button.disabled = true;
	button.className = button.className.replace(/\bg_gsbutton\b/, 'g_gsbuttondis');
}

function enableButtonGs(button)
{
	if(button == null) return;
	
	if(typeof button == typeof 'string')
	{
		button = $i(button);
		if(button == null) return;	
	}
	
	button.disabled = false;
	button.className = button.className.replace(/\bg_gsbuttondis\b/, 'g_gsbutton');
}

function gsbuttonout(b)
{
	if(b != null)
	{
		if(b.className.indexOf('g_gsbuttonhover') > -1)
		{
			b.className = b.className.replace('g_gsbuttonhover', 'g_gsbutton');

        }
        if (b.className.indexOf('g_gsbuttonhoverBlue') > -1) {
            b.className = b.className.replace('g_gsbuttonhoverBlue', 'g_gsbuttonBlue');
        }
	}
}

function ShowCenteredAlertDIV1(divID,h,w)
{
	var ih = (h != null)? parseInt(h): 0;
	var iw = (w != null)? parseInt(w): 0;

	var alertDiv = document.getElementById(divID);
	alertDiv.style.display = "block";
	var itop = _gtop(155) + ih;

	var ileft = _gleft(250) + iw;
	
	alertDiv.style.top = itop + "px";
	alertDiv.style.left = ileft + "px";	
	
	window.focus();
}

function HideToolTipDIV(divID)
{
	var tooltipDiv = document.getElementById(divID);
	
	if(tooltipDiv != null)
		tooltipDiv.style.display = "none";
	
	var blurDiv = $i('divblur');
	
	if(blurDiv != null)
	{
		document.body.removeChild(blurDiv);
		window.onresize = function(){};
		if(navigator.userAgent.toLowerCase().indexOf("msie 6") != -1)
		{
			showSelects();
		}
		
	}
	
}

//returns the scrollbar top offset for IE browser (int)
function getIeScrollTop()
{
	var ish = (document.documentElement.scrollTop)? document.documentElement.scrollTop: window.pageYOffset;
	ish = (!isNaN(ish)? ish: 0);
	return ish;
}

//returns the scrollbar left offset for IE browser (int)
function getIeScrollLeft()
{
	var isw = (document.documentElement.scrollTop)? document.documentElement.scrollLeft: window.pageXOffset;
	isw = (!isNaN(isw)? isw: 0);
	return isw;
}


//returns client height 
function _wheight()
{
	
	if(window.innerHeight)
	{
		return window.innerHeight;
	}
	if(document.documentElement && document.documentElement.clientHeight)
	{	
		return document.documentElement.clientHeight;
	}

	return document.body.clientHeight;	
}

//returns client width 
function _wwidth()
{
	if(window.innerWidth)
		return window.innerWidth;
	if(document.documentElement && document.documentElement.clientWidth)
		return document.documentElement.clientWidth;
	
	return document.body.clientWidth;	
}

//calculates top  property for centered alert div
function _gtop(delta)
{
	var iwh = _wheight();

	var t = (iwh / 2) - delta;

	return t + getIeScrollTop();
}

//calculates left  property for centered alert div
function _gleft(delta)
{
	var iww = _wwidth();

	var t = (iww / 2) - delta;

	return t + getIeScrollLeft();
}

//returns x,y map of mouse coordinats
function getMouseXY(e) 
{
	var IE = document.all?true:false;
	if (IE) 
	{ // grab the x-y pos.s if browser is IE
		tempX = e.clientX + getIeScrollLeft();
		tempY = e.clientY + getIeScrollTop();
	} 
	else 
	{  // grab the x-y pos.s if browser is NS
		tempX = e.pageX
		tempY = e.pageY
	}  
	// catch possible negative values in NS4
	if (tempX < 0){tempX = 0}
	if (tempY < 0){tempY = 0}  
	// show the position values in the form named Show
	// in the text fields named MouseX and MouseY

	return {"x":tempX,"y":tempY}
}

function redoModal()
{
	var blurDiv = $i('divblur');
	
	if(blurDiv != null)
	{
		calculateBlur(blurDiv);
	}
}

function calculateBlur(blurDiv)
{
	if(null == blurDiv) return;
		var ihight = 0;
	var iwidth = 0;
	
	if(typeof document.body.clientHeight != 'undefined' && typeof document.documentElement.clientHeight != 'undefined')
	{

		if(document.body.clientHeight != 0 && document.body.clientHeight != null && document.documentElement.clientHeight != 0 && document.documentElement.clientHeight != null)
		{
			ihight = Math.max(document.body.clientHeight, document.documentElement.clientHeight);
		}
		else
		{

			ihight = _wheight();
		}		
	}
	else
	{

		ihight = _wheight();
	}

    if (ihight < 3100)
	    ihight = 3100;
	blurDiv.style.height = ihight  + 'px';
	

	if(typeof document.body.clientWidth != 'undefined' && typeof document.documentElement.clientWidth != 'undefined')
	{
		if(document.body.clientWidht != 0 && document.body.clientWidht != null && document.documentElement.clientWidht != 0 && document.documentElement.clientWidht != null)
		{

			iwidth = Math.max(document.body.clientWidht, document.documentElement.clientWidht); 
		}
		else
		{
			iwidth= _wwidth();
			
		}		
	}
	else
	{
		iwidth= _wwidth();
		
	}

	if(iwidth < 960) iwidth = 960;

	blurDiv.style.width = iwidth + 'px';
	
}
function doModal()
{
	var blurDiv = document.createElement("div");
	
	blurDiv.id = 'divblur'; 
	blurDiv.className = 'g_divblur'; 
	
	calculateBlur(blurDiv);
	if(navigator.userAgent.toLowerCase().indexOf("msie 6") != -1)
	{
		hideSelects();
	}
	
	document.body.appendChild(blurDiv);
	window.onresize = function(){redoModal();};
	
}

function hideSelects()
{
	var selects = document.getElementsByTagName('select');
	for(var i = 0; i < selects.length; i++)
	{
		//selects[i].style.opacity = '0';
		//selects[i].style.filter = 'alpha(opacity=0)';	
		selects[i].style.visibility = 'hidden';
	}
}
function showSelects()
{
	var selects = document.getElementsByTagName('select');
	for(var i = 0; i < selects.length; i++)
	{
		//selects[i].style.opacity = '1';
		//selects[i].style.filter = 'alpha(opacity=100)';		
		selects[i].style.visibility = 'visible';
	}
}
function buttonhover(b)
{
	if(b != null)
	{
		if(b.className.indexOf('g_button') > -1 && b.className.indexOf('g_buttonhover') == -1 && b.className.indexOf('g_buttondis') == -1)
		{
			b.className = b.className.replace('g_button', 'g_buttonhover');
		}
	}
}

function buttonout(b)
{
	if(b != null)
	{
		if(b.className.indexOf('g_buttonhover') > -1)
		{
			b.className = b.className.replace('g_buttonhover', 'g_button');
		}
	}
}

function isEmail(string) 
{
	if (string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
		return true;
	else
		return false;
}

function addLoadEvent(func) {

  var oldonload = window.onload;
  if (typeof window.onload != 'function') {

    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
function addClickEvent(obj,func) 
{
  if(obj == null) return;
  var oldonclick = obj.onclick;
  if (typeof obj.onclick != 'function') 
  {
    obj.onclick = func;
  } 
  else
  {
	obj.onclick = function() {
      if (oldonclick) 
      {
        oldonclick();
      }
      func();
    };
  }
}
function addSomeEvent(obj, event, func) 
{
  if(obj == null) return;
  var evstr = 'obj.on' + event;
  
  var oldevent = eval(evstr);
  
  if (typeof eval(evstr) != 'function') 
  {
    eval(evstr + ' = func;');
  } 
  else
  {
	eval(evstr + ' = function(){if(oldevent){oldevent();}func();};');
	
  }
}

// add-this code begin

//	addthis_pub = 'fixya';
//	addthis_brand   = 'FixYa';
//	addthis_logo    = 'http://www.fixya.com/images/fxnlogo_s.png';
//	addthis_options = 'email, favorites, google, delicious, digg, reddit, stumbleupon, twitter, facebook, myspace, more';
//	addthis_logo_color = 'ffffff';
//	addthis_hide_embed = true; 

// add-this code end


//preloading buton images:
if (document.images)
{
	setTimeout(function(){
		//var pic1= new Image(230, 37);
		//pic1.src="/images/misc/btnlhover.gif";
		//var pic2= new Image(40, 37); 
		//pic2.src="/images/misc/btnrhover.gif";	
		//var pic3= new Image(74, 26); 
		//pic3.src="/images/misc/askme1hover.gif"; // in my profile for an expert (not self)
		//var pic5= new Image(170, 37);
		//pic5.src="/images/misc/buttonlivechathover.gif";
		//var pic6= new Image(220, 37);
		//pic6.src="/images/misc/same2hover.gif";
		//var pic7= new Image(180, 37);
		//pic7.src="/images/misc/postnewhover.gif";
		//var pic8= new Image(46, 29);
		//pic8.src="/images/misc/btn_edithover.gif";
		//var pic9= new Image(56, 29);
		//pic9.src="/images/misc/btn_cancelhover.gif";
		//var pic10= new Image(237, 37);
		//pic10.src="/images/misc/gsbuttonhover.gif";
		
		//var pic11= new Image(70, 27);
		//pic11.src="/images/misc/btn_sye_search_on.gif";// in use in SYE, RNR and places...
		
		//var pic12= new Image(94, 17);
		//pic12.src="/images/misc/btn_addExpertise_on.png";// in use in SYE...
		
		//var pic13= new Image(68, 45);
		//pic13.src="/images/misc/button_sye_chat_on.png";//SYE solve repeater
		
		//var pic14= new Image(68, 37);
		//pic14.src="/images/misc/btn_sye_solve_on.png";//SYE solve repeater
		
		//var pic15= new Image(68, 45);
		//pic15.src="/images/misc/btn_sye_premium_on.png";//SYE solve repeater
		
		//var pic16= new Image(68, 37);
		//pic16.src="/images/misc/btn_sye_grey_solve_on.png";//SYE solve repeater
		
		//var pic17= new Image(68, 45);
		//pic17.src="/images/misc/btn_sye_grey_premium_on.png";//SYE solve repeater
		
		//var pic18= new Image(84, 31);
		//pic18.src="/images/misc/btn_blue_narrowhover.gif";
		
	},1);
	
}

var boldGoogleAdWords = null;
function makeBoldAdWords(text) {
    var i, j, lWord, lText, iPos, iLen, oWord, nPos, wholeWord, nLetter, pLetter, originalText;
    try {
        originalText = text;
        lText = text.toLowerCase();
        if (boldGoogleAdWords != null) {
            for (i = 0; i < boldGoogleAdWords.length; i++) {
                lWord = boldGoogleAdWords[i].toLowerCase();
                if (lWord == "b")
                    continue;
                lWord = lWord.replace("<", "").replace(">", "").replace("/", "");
                if (lWord.length <= 0)
                    continue;
                iLen = lWord.length;
                iPos = lText.indexOf(lWord);
                while (iPos > -1) {
                    wholeWord = false;
                    oWord = text.substr(iPos, iLen);

                    if (iPos == 0 || iPos + iLen >= text.length) {
                        wholeWord = true;
                    }
                    else {
                        nLetter = text.substr(iPos + iLen, 1);
                        pLetter = text.substr(iPos - 1, 1);
                        if (nLetter == ' '
                         || nLetter == '.'
                         || nLetter == ',')
                            if (pLetter == ' '
                             || pLetter == '.'
                             || pLetter == ',')
                                wholeWord = true;
                    }
                    if (wholeWord) {
                        text = text.substr(0, iPos) + "<b>" + oWord + "</b>" + text.substr(iPos + iLen);
                        nPos = iPos + 8 + iLen;
                        lText = text.toLowerCase();
                    } else {
                        nPos = iPos + 1;
                    }
                    iPos = lText.indexOf(lWord, nPos);
                }
            }
        }
    } catch (e) {
        return originalText;
    }
    return text;
}

function setFocusOnReal(obj) {
    var id = obj.id.substring(0, obj.id.length - 5);
    var realObj;
    realObj = document.getElementById(id);
    if (!realObj)
        return;
    obj.style.display = "none";
    realObj.style.display = "";
    realObj.focus();
}

function checkFocusOnReal(obj) {
    alert(1);
    var id = obj.id.substring(0, obj.id.length - 5);
    var realObj;
    realObj = document.getElementById(id);
    if (!realObj)
        return;
    if (realObj.value != "") {
        obj.style.display = "none";
        realObj.style.display = "";
    }
}

function AddOnEnterAction(txt, btn, cmd) {
    var oldFun = txt.onkeydown;
    txt.onkeydown = function(event) {
        if (typeof oldFun == 'function')
            oldFun(event);
        CheckOnEnterAction(txt, btn, cmd, event);
    };
}

function CheckOnEnterAction(txt, btn, cmd, e) {
    var keycode;

    if (e && e.which) keycode = e.which;
    else if (window.event.charCode) keycode = window.event.charCode;
    else if (window.event.keyCode) keycode = window.event.keyCode;
    else return true;

    if (keycode == 13) {
        if (txt.getAttribute("resultsHidden") == 1) {
            return;
        }
        if (btn.length > 0) {
            btn = $i(btn);
            if (btn) {
                btn.onclick();
                return false;
            }
        }
        if (cmd.length > 0) {
            eval(cmd);
        }
    }

    return true;
}

function doNotBubble(e)
{
	if (!e) var e = window.event;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	//onclick="event.cancelBubble=true;"
}


function expandContainerHeight() {
	var divSubContainersLeft, divSubContainersRight;
	divSubContainersLeft = $$('div[class="c_srch_res"] div[class="leftPane"]');
	divSubContainersRight = $$('div[class="c_srch_res"] div[class="rightPane"]');
	for (var i = 0; i < divSubContainersLeft.length; i++)
		setMinHeightByOffset(divSubContainersRight[i], divSubContainersLeft[i]);
}
function setMinHeightByOffset(obj1, obj2) {
	if (obj1.offsetHeight < obj2.offsetHeight)
		obj1.style.height = obj2.offsetHeight - 2 + 'px';
}
function setChildVisible(relObj) {
	var parentObj = relObj.parentNode, items;
	if (parentObj == null) return;
	parentObj = Element.extend(parentObj);							
	items = parentObj.select('div[class="c_srch_prb"], div[class="c_srch_sep"]');
	for (var i = 0; i < items.length; i++)
		items[i].style.display = 'block';
	relObj.style.display = 'none';
	parentObj.style.height = '';
}

function createCookie(name, value, days) 
{
	if (days) 
	{ 
		var date = new Date(); 
		date.setTime(date.getTime()+(days*24*60*60*1000)); 
		var expires = "; expires="+date.toGMTString();
	}
	else 
	{ 
		var expires = ";";
	}
	document.cookie = name + "=" + value + expires + "; path=/";
}

function limitCharacters(charLimit, oTxt) {
    var txt, iLen;
    if (!oTxt)
        return;
    txt = oTxt.value;
    iLen = txt.length;
    if (iLen > charLimit)
        oTxt.value = txt.substring(0, charLimit);
}

   function sponsored_calculateHeights() 
   {
        //var dHeight = document.body.scrollHeight;
        //var bottomoffset = 1050;
        //alert(dHeight - bottomoffset);
        var alowed = 2400;
        var ctrlsponsored = $('ctrlsponsored');
        
        if(ctrlsponsored == null) return;
        
        //alert(ctrlsponsored.offsetTop);
        if(ctrlsponsored.offsetTop < alowed)
        {
			//alert('small');
			ctrlsponsored.style.display = 'none';
			logEvent(92);
        }
    }

/* This indicated lib.js was loaded - Do not delete! */
var LIB_LOADED = true;
/*****************************************************/
/* Initialize Error Logging */
//window.onerror = el_handleError;
