
// Notes : Add div element dynamically. FF isn't recognising the contents of the div and hence disply:none isn;t working
var d = document;

var divObjId = "";
function getAbsX(elt) { return parseInt(elt.x) ? elt.x : getAbsPos(elt,"Left"); };
function getAbsY(elt) { return parseInt(elt.y) ? elt.y : getAbsPos(elt,"Top"); };
function getAbsPos(elt,which) {
	iPos = 0;
	while (elt != null) {
  		iPos += elt["offset" + which];
  		elt = elt.offsetParent;
 	}
 	return iPos;
};
function getO(id, css){
	var o = (document.getElementById)?document.getElementById(id):document.all[id];
	return o;
};
function HttpRequestComplete(str){
	getO('planDetailsContent').innerHTML = str;
}	
var flashContent0 = "";
var flashContent1 = "";
var flashContent2 = "";
var flashContent3 = "";
var flashContent4 = "";
var flashContent5 = "";
var flashContent6 = "";
var flashContent7 = "";
var flashContent8 = "";
var flashContent9 = "";
var flashContent10 = "";

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return scrOfY;
}
function initDetails(id){
	var topPos = getAbsY(getO(id));
	var diffInHeight = parseInt(getO('more_details_bg').style.height) - 800;
	topPos =  ((getScrollXY() + 50) >  diffInHeight)?diffInHeight : (getScrollXY() + 50);
	getO('planDetailsContent').style.top = topPos + 'px';
	var sel = document.getElementsByTagName('select');
	for (i = 0; i<sel.length; i++){
		sel[i].style.display = 'none';
	}
	doFlash('hide');
	getO('planDetailsContent').style.display = 'block';
	getO('more_details_container').style.display = 'block';
}
function getDetails(serverPath,mapping,contractDurationId,handsetId,servicePlanId,parentServicePlanId, id){
	getO('more_details_bg').style.height = document.body.offsetHeight + 'px';
	getO('more_details_bg').style.width = document.body.offsetWidth -2 + 'px';
	getO('more_details_bg').style.display = 'block';
	getO('more_details_container').style.display = 'block';
	// getO('space202').style.height = 150+'px';
	// using 'featureId' to switch navigation off
	window.httpRequest.call({url:serverPath + '/shop/yourplan/selection',params:{'mapping':mapping,'contractDurationId':contractDurationId,'handsetId':handsetId,'servicePlanId':servicePlanId,'parentServicePlanId':parentServicePlanId, 'featureId':'1'}, method:'post', onComplete:HttpRequestComplete, response:'TEXT'});
	initDetails(id);
}
function removeDetails(){
doFlash('show');
	getO('planDetailsContent').innerHTML = '<span class="loading">loading ...</span>';
	getO('more_details_bg').style.display = 'none';
	getO('more_details_container').style.display = 'none';
	var sel = document.getElementsByTagName('select');
	for (i = 0; i<sel.length; i++){
		sel[i].style.display = 'block';
	}
	// getO('space202').style.height = 20+'px';
}

function doFlash(func){
	if(document.all){
		if(func=='hide'){
			for(var x=0;x<10;x++){
				if(getO('flashContent'+x)){
					eval('flashContent'+x+' = getO(\'flashcontent'+x+'\').innerHTML;');
					getO('flashcontent'+x).innerHTML = '';
				}
			}
		}
		if(func=='show'){
			for(var x=0;x<10;x++){
				if(eval('flashContent'+x) !=""){
					if(getO('flashContent'+x)){
						getO('flashContent'+x).innerHTML=eval('flashContent'+x);
					}
				}
			}
		}
	}
}

var HttpRequest = function (){
    this.url = false;
    this.method = 'GET';
    this.response = 'XML';
    this.contentType = 'application/x-www-form-urlencoded';
    this.eventReadyState = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
    this.httpObject = function(){
        var o;
        try{
            o = new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e){
            try{
                o = new ActiveXObject("Microsoft.XMLHTTP");
            }catch(e){
                o = false;
            }
        }
	    if(!o && typeof XMLHttpRequest!='undefined'){
		    o = new XMLHttpRequest();
	    }
	    if(typeof o=='object'){
	        return o;
	    }else{
	        //alert('Sorry your browser doesn\'t support the latest xml object\nBrowsers supported are:\nOn windows: IE5.5+, Mozilla Firefox\nOn Mac: Mozilla Firefox\nPlease upgrade your browser to use the editing interface.');
	        // Insert non JavaSript link here.
	        return false;
	    }
    }
    
    this.call = function(o){
        var url = (o.url)? o.url : this.url;
        var method = (o.method)? o.method : this.method;
        var params = (o.params)? o.params : false;
        var param = "";
        var response = (o.response)? o.response : this.response;
        var contentType = (o.contentType)? o.contentType : this.contentType;
        if(!url){alert('You must at list specify an url in the call method.'); return false}
        var httpObject = this.httpObject();
        if(typeof httpObject != 'object'){return false;}
		    httpObject.onreadystatechange = function(){
			if (window.httpRequest.eventReadyState[httpObject.readyState] == 'Complete') {
				if (httpObject.status == 200) {					
				    if(response == 'TEXT'){
    					o.onComplete(httpObject.responseText);
    				}else if(response=='JS'){
    				    eval(httpObject.responseText)
				    }else{
    					o.onComplete(httpObject.responseXML.documentElement);
				    }
				} else {
			        alert('Sorry There was a problem making the request.\nThe request returned the following error code : ' + httpObject.status);
				}
			}
		}
		httpObject.open(method, url, true);
		httpObject.setRequestHeader('Content-Type', contentType);
		httpObject.setRequestHeader('Connection','close');
		if(params){
		    for(var key in params){
		        param += key + '=' + params[key] + '&';
		    }
		}
		// alert('param = ' + param);
		httpObject.send(param);
    }
    window.httpRequest = this;
}
new HttpRequest();

