/****************************************************************************************************/
/**************This class contains all common functions used in other Javascript files***************/
/****************************************************************************************************/


var ajaxurl = "/bps"; 
var offsetfromcursorX = 12;
var offsetfromcursorY = 10;
var offsetdivfrompointerX = 10;
var offsetdivfrompointerY = 14;
var ie = document.all;
var ns6 = document.getElementById && ! document.all;
var enabletip = false;	
var ns6 = document.getElementById && ! document.all;
var enabletip = false;

/*Detect browser*/
if (ie || ns6)
{
	var tipobj = document.all ? document.all["dhtmltooltip"] : document.getElementById ? document.getElementById("dhtmltooltip") : "";
}

var pointerobj = document.all ? document.all["dhtmlpointer"] : document.getElementById ? document.getElementById("dhtmlpointer") : "";

function ietruebody() 
{
	return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
}
	
/*Detect browser*/	

isIE = detectBrowser();
function detectBrowser()
{
    
    var browser=navigator.appName
    
    var b_version=navigator.appVersion
    
    version=parseFloat(b_version)
    
    if (browser=="Netscape")
    {
//            return false;
    }
    else if(browser=="Microsoft Internet Explorer"){
        return true;
    }
}

// Create HttpRequestObject
function createXmlHttpRequestObject() 
{
    var ro;
    var browser = navigator.appName;
    // Need to determine IE7 and not do this.
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

/*Create response XML from data received from server*/
function createResponseXML(textXML){

	// code for IE
	if (window.ActiveXObject)
	{
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");


		xmlDoc.async="false";
		xmlDoc.loadXML(textXML);
		return xmlDoc;
	}
	// code for Mozilla, Firefox, Opera, etc.
	else
	{
		var parser=new DOMParser();
		var xmlDoc = parser.parseFromString(textXML,"text/xml");
		return xmlDoc;
	}
}
/*End*/

/*End*/
/*Parse ConditionTag*/
/*hadle show tooltip */

function findPosX(obj)
{
    var curleft = 0;
    if(obj.offsetParent)
    {
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
	}
    else if(obj.x)
    {
        curleft += obj.x;
    }
    return curleft;
}

function findPosY(obj)
{
    var curtop = 0;
    if(obj.offsetParent)
    {
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    }
    else if(obj.y)
    {
        curtop += obj.y;
    }
    return curtop;
}

function checkValidChar(strCh)
{
	var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
  	for (var i = 0; i < strCh.length; i++) {
      	if (iChars.indexOf(strCh.charAt(i)) != -1) 
	  	{
      		return false;
      	}
	}
	
	return true;
}

function srCodeReload() { 
	alert("here");
	document.location.reload();
	document.getElementById("f_sercode").focus();
}

//These script is to handle hotpoint display. Bach Le added on Jun 26 2008

function getRealLeft(el){
	xPos = document.getElementById(el).offsetLeft;
	tempEl = document.getElementById(el).offsetParent;
	while (tempEl != null) {
		xPos += tempEl.offsetLeft;
		tempEl = tempEl.offsetParent;
	}
	return xPos;
}
	
function getRealTop(el){
	yPos = document.getElementById(el).offsetTop;
	tempEl = document.getElementById(el).offsetParent;
	while (tempEl != null) {
		yPos += tempEl.offsetTop;
		tempEl = tempEl.offsetParent;
	}
	return yPos;
}

function showInfo(div_id,obj,description,link, posX, posY) {
	var div = document.getElementById(div_id);
	var detail = obj.attributes.getNamedItem("detail").value;
	detail = detail.replace(/\*\$\*/g,"<br>");
	var innerHTML = "<table width=100% cellspacing=0 cellpadding=3 style='table-layout:fixed; text-align:left; vertical-align: top; overflow:scroll'>"+
					"<tr bgcolor='#99cc00'><td style='font-weight:bold; color:#FFFFFF; padding: 3px'>Navigation</td>"+
					"<td align='right'><img src='/bps/export/system/galleries/pics/BPS_EMS_ISO140001/close.gif' onclick='hideInfo("+div_id+");'/></td></tr>"+
					"<tr><td colspan='2' style='padding: 3px; text-align:justify; WORD-BREAK:BREAK-ALL'>"+detail+ 
					"</td></tr><tr><td colspan='2' style='padding: 3px'><a href='"+obj.attributes.getNamedItem("link").value+
					"'>More information</a></td></tr></table>"
	div.innerHTML = innerHTML;
	div.style.position = 'absolute';
	div.style.top = findPosY(obj)+8; //substract 12 in horizontal and 40 in vertical
	div.style.left = findPosX(obj)+17;
	div.style.zIndex = 999;
	div.style.visibility = 'visible';
}

	
function hideInfo(div_id) {
	var div = document.getElementById(div_id);
	if (!div) {
		div = document.getElementById("hotpointInfo");
	}
	div.innerHTML = "";
	div.style.visibility = 'hidden';
}

	
function changeHotpointPosition() {
	var infoDiv = document.getElementById("hotpointInfo");
	if (!infoDiv || !infoDiv.innerHTML) return;
	var infoStr = infoDiv.innerHTML.split(";");
	var images = document.images;
	
	for (var i=0; i<infoStr.length; i++) {
		var fckPos = infoStr[i].split("-");
		var fckPosX = fckPos[1];
		var fckPosY = fckPos[2];
		var bkgImageId = fckPos[0];
		
		if (!document.getElementById(bkgImageId)) continue;
		//get position of background image on browser
		var realPosX = getRealLeft(bkgImageId);
		var realPosY = getRealTop(bkgImageId);
		
		for (var j=0; j<images.length; j++) {
			if (images[j].id.indexOf("hotpoint") != -1 && images[j].id.indexOf(bkgImageId) != -1) {
				var posX = images[j].style.left; //getRealLeft(images[j].id);
				var posY = images[j].style.top; //getRealTop(images[j].id);
				var dx = parseInt(posX) - parseInt(fckPosX); //calculate distance from hot point to top-left of the background
				var dy = parseInt(posY) - parseInt(fckPosY); //calculate distance from hot point to top-left of the background
			
				var realX = parseInt(realPosX) + parseInt(dx);
				var realY = parseInt(realPosY) + parseInt(dy);
				//images[j].style.position = 'absolute';
				images[j].style.left = realX-12;
				images[j].style.top = realY-40;
				
				var actualX = getRealLeft(images[j].id);
				var actualY = getRealTop(images[j].id);

				var errX = actualX-realX;
				var errY = actualY-realY;
				if (errX!=0 || errY!=0) {
					images[j].style.position = "absolute";
					images[j].style.left = realX;
					images[j].style.top = realY;
				}
				
				//alert(images[j].id+"(FCKpos:"+posX+"-"+posY+",Bkg:"+fckPosX+"-"+fckPosY+",Distance:"+dx+"-"+dy+"\n"+"RealPos....Bgk:"+realPosX+"-"+realPosY+"hotpoint:"+realX+"-"+realY+"\nErr: "+errX+"-"+errY);
				
			} //end if
		}
	}

	//alert("Done");

	return;
}

//Ajax function handling exit (close IE window)
var reportingHttp = null;

function escapeSuccess(){
   	//alert(reportingHttp.readyState);
	if (reportingHttp.readyState == 4 ) {
		//alert("done");
	}
	//return;
}

function saveExitPage(url) {
	if (event.clientY < 0) {
		var formURL = ajaxurl + "/ExitPageStatsHandler";
	
		reportingHttp = createXmlHttpRequestObject();
		reportingHttp.open("POST", formURL, true);
		reportingHttp.onreadystatechange = escapeSuccess;

		var param = "url=" + url;
		reportingHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	    	reportingHttp.setRequestHeader("Content-length",param.length);
    		reportingHttp.setRequestHeader("Connection", "close");  
		reportingHttp.send(param);	

		//alert("Exiting from...!"+url+" with param: "+param);
	}
}