//start source: http://www.quirksmode.org/js/xmlhttp.html
function PageWidth() {
    var l_intWidth = 0;
    var l_intScrollWidth = 0;
    l_intWidth = document.documentElement.clientWidth;
    l_intScrollWidth = document.body.offsetWidth;
    if(l_intScrollWidth > l_intWidth){
        l_intWidth = l_intScrollWidth;
    }
    return l_intWidth;
}

function PageHeight() {
    var l_intHeight = 0;
    var l_intScrollHeight = 0;
    l_intHeight = document.documentElement.clientHeight;
    l_intScrollHeight = document.body.offsetHeight;
    if(l_intScrollHeight > l_intHeight){
        l_intHeight = l_intScrollHeight;
    }
    return l_intHeight;
}

function GetScrollHeight() {
   var h = window.pageYOffset ||
           document.body.scrollTop ||
           document.documentElement.scrollTop;
           
   return h ? h : 0;
}

function ViewPortHeight() {
    var viewportwidth;
    var viewportheight;

    // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight

    if (typeof window.innerWidth != 'undefined')
    {
      viewportwidth = window.innerWidth,
      viewportheight = window.innerHeight
    }

    // IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)

    else if (typeof document.documentElement != 'undefined'
     && typeof document.documentElement.clientWidth !=
     'undefined' && document.documentElement.clientWidth != 0)
    {
       viewportwidth = document.documentElement.clientWidth,
       viewportheight = document.documentElement.clientHeight
    }

    // older versions of IE

    else
    {
       viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
       viewportheight = document.getElementsByTagName('body')[0].clientHeight
    }
    return viewportheight;
}

function CreateLightBox() {
    var l_objElement;
    var l_objElementBox;
    if(document.getElementById('LightBox')) {
        l_objElement = document.getElementById('LightBox');
        l_objElementBox = document.getElementById('LightBoxContent');
        l_objElement.style.display='block';
        l_objElementBox.style.display='block';
        
        if(document.getElementById('ImgSelector')) {
            document.getElementById('ImgSelector').style.display='none';
        }
    } else {
        l_objElement = document.createElement('div');
        l_objElement.className='LightBoxBackground';
        l_objElement.id = 'LightBox';
        l_objElement.style.height = (PageHeight() + 'px');
        l_objElement.style.width = (PageWidth() + 'px');
        l_objElement.onclick=function(e){
            if (!e) var e = window.event;
	        var l_objClickedItem = (window.event) ? e.srcElement : e.target;
            if(l_objClickedItem.id=='LightBox') {
                document.getElementById('LightBox').style.display='none';
            }
        };
        l_objElementBox = document.createElement('div');
        l_objElementBox.id='LightBoxContent';
        l_objElementBox.className='LightBoxContent';
        l_objElement.appendChild(l_objElementBox);
        document.body.appendChild(l_objElement);
    }
    return l_objElementBox;
}

function SendRequest(p_strUrl, p_strPostData, p_strContentElement) {
	var l_objReq = CreateXMLHTTPObject();
	if (!l_objReq) return;
	var l_strMethod = (p_strPostData) ? "POST" : "GET";
	l_objReq.open(l_strMethod, p_strUrl + '?' + new Date(),true);
	l_objReq.setRequestHeader('User-Agent','XMLHTTP/1.0');
	if (p_strPostData) l_objReq.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	l_objReq.onreadystatechange = function () {
	    if(p_strContentElement) {
	        var l_objElement = document.getElementById(p_strContentElement);
	    } else {
	        var l_objElement = CreateLightBox();
	    }
		if (l_objReq.readyState != 4) return;
		if (l_objReq.status != 200 && l_objReq.status != 304) {
			l_objElement.innerHTML = l_objReq.status;
			return;
		}
		l_objElement.innerHTML = l_objReq.responseText;
		l_objElement.style.left = (PageWidth()/2 - l_objElement.offsetWidth/2) + 'px';
		l_objElement.style.top = (ViewPortHeight()/2 - l_objElement.offsetHeight/2)+GetScrollHeight() + 'px';
	}
	if (l_objReq.readyState == 4) return;
	    l_objReq.send(p_strPostData);
}


function SendRequestFunction(p_strUrl, p_strPostData, p_objFunction, p_strContentElement) {
	var l_objReq = CreateXMLHTTPObject();
	if (!l_objReq) return;
	var l_strMethod = (p_strPostData) ? "POST" : "GET";
	l_objReq.open(l_strMethod, p_strUrl + '?' + new Date(),true);
	l_objReq.setRequestHeader('User-Agent','XMLHTTP/1.0');
	if (p_strPostData) l_objReq.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	l_objReq.onreadystatechange = function () {
	    if(p_strContentElement) {
	        var l_objElement = document.getElementById(p_strContentElement);
	    } else {
	        var l_objElement = CreateLightBox();
	    }
		if (l_objReq.readyState != 4) return;
		if (l_objReq.status != 200 && l_objReq.status != 304) {
			l_objElement.innerHTML = l_objReq.status;
			return;
		}
		l_objElement.innerHTML = l_objReq.responseText;
		l_objElement.style.left = (PageWidth()/2 - l_objElement.offsetWidth/2) + 'px';
		l_objElement.style.top = (ViewPortHeight()/2 - l_objElement.offsetHeight/2)+GetScrollHeight() + 'px';
		p_objFunction(l_objReq);
	}
	if (l_objReq.readyState == 4) return;
	    l_objReq.send(p_strPostData);
}

function SendRequestExec(p_strUrl, p_strPostData) {
	var l_objReq = CreateXMLHTTPObject();
	if (!l_objReq) return;
	var l_strMethod = (p_strPostData) ? "POST" : "GET";
	l_objReq.open(l_strMethod, p_strUrl + '?' + new Date(),true);
	l_objReq.setRequestHeader('User-Agent','XMLHTTP/1.0');
	if (p_strPostData) l_objReq.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	l_objReq.onreadystatechange = function () {
		if (l_objReq.readyState != 4) return;
		if (l_objReq.status != 200 && l_objReq.status != 304) {
			return;
		}
		setTimeout("document.location=document.location", 1);
	}
	if (l_objReq.readyState == 4) return;
	    l_objReq.send(p_strPostData);
}

var m_objXMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function CreateXMLHTTPObject() {
	var l_objXmlhttp = false;
	for (var i=0;i<m_objXMLHttpFactories.length;i++) {
		try {
			l_objXmlhttp = m_objXMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return l_objXmlhttp;
}

function URLEncode(p_strIn) { 
	var SAFECHARS = "0123456789" +		// Numeric
	"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
	"abcdefghijklmnopqrstuvwxyz" +
	"-_.!~*'()";			// RFC2396 Mark characters
				
	var HEX = "0123456789ABCDEF"; 
	if (p_strIn==null) 
		return p_strIn; 

	var plaintext = p_strIn + ''; 
	var encoded = ""; 

	for (var i = 0; i < plaintext.length; i++ ) { 
		var ch = plaintext.charAt(i); 
		if (ch == " ") { 
			encoded += "+"; // x-www-urlencoded, rather than %20 
		} else if (SAFECHARS.indexOf(ch) != -1) { 
			encoded += ch; 
		} else { 
			var charCode = ch.charCodeAt(0); 
			
			if (charCode > 255) { 
				alert( "Unicode Character '" + ch + "' cannot be encoded using standard URL encoding.\n" + "(URL encoding only supports 8-bit characters.)\n" + "A space (+) will be substituted." ); 
				encoded += "+"; 
			} else {
				encoded += "%"; 
				encoded += HEX.charAt((charCode >> 4) & 0xF); 
				encoded += HEX.charAt(charCode & 0xF);
			} 
		} 
	}
	p_strIn = encoded; 
	return p_strIn; 
}

function GetAllValues(p_strId) {
    var l_strValues = '';
    var l_objItems = document.getElementById(p_strId).getElementsByTagName('input');
    for (i=0; i<l_objItems.length; i++) {
        if(l_objItems[i].type=='radio' || l_objItems[i].type=='checkbox') {
            if(l_objItems[i].checked) {
                l_strValues = l_strValues + '&' + l_objItems[i].name + '=' + URLEncode(l_objItems[i].value);
            }
        } else if (l_objItems[i].type=='button' || l_objItems[i].type=='submit'){
            //do not add.
        } else {
            l_strValues = l_strValues + '&' + l_objItems[i].name + '=' + URLEncode(l_objItems[i].value);
            //l_strValues = l_strValues + '&' + l_objItems[i].name + '=' + l_objItems[i].value;
        }
    }
    l_objItems = document.getElementById(p_strId).getElementsByTagName('textarea');
    for (i=0; i<l_objItems.length; i++) {
        //l_strValues = l_strValues + '&' + l_objItems[i].name + '=' + URLEncode(l_objItems[i].value);
        l_strValues = l_strValues + '&' + l_objItems[i].name + '=' + l_objItems[i].value;
    }
    l_objItems = document.getElementById(p_strId).getElementsByTagName('select');
    for (i=0; i<l_objItems.length; i++) {
        l_strValues = l_strValues + '&' + l_objItems[i].name + '=' + URLEncode(l_objItems[i].options[l_objItems[i].selectedIndex].value);
    }
    //return l_strValues.replace(/(<([^>]+)>)/ig,"");
    return l_strValues;
}

function ImageFromAlbum(p_strUploadFieldId, p_strPreviewId, p_strMapId, p_strPage) {
    var l_objElement = CreateLightBox();
    
    var l_objElementBox;
    if(document.getElementById('ImgSelector')) {
        l_objElementBox = document.getElementById('ImgSelector');
        l_objElementBox.style.display='block';
    } else {
        l_objElementBox = document.createElement('div');
        l_objElementBox.className='ImgSelector';
        l_objElementBox.id = 'ImgSelector';

        l_objElement.parentNode.appendChild(l_objElementBox);
    }
    var l_strUrlExtra = '';
    if(p_strPage!=undefined) {
        l_strUrlExtra += '&Page=' + p_strPage;
    }
    if(p_strMapId!=undefined) {
        l_strUrlExtra += '&fId=' + p_strMapId;
    }
    SendRequest('/ajax/Filechoice.aspx', l_strUrlExtra + '&UploadFieldId=' + p_strUploadFieldId + '&PreviewId=' + p_strPreviewId, 'ImgSelector')
}

function ImageFromAlbumChoice(p_strUploadFieldId, p_strFilename, p_strThumbnail, p_strPreviewId) {
    document.getElementById(p_strUploadFieldId).value = p_strFilename;
    document.getElementById(p_strPreviewId).innerHTML = '<img src="' + p_strThumbnail + '" />';
    document.getElementById('ImgSelector').style.display='none';
    if(document.getElementById('LightBoxContent').innerHTML=='') {
        document.getElementById('LightBox').style.display='none';
    }
}

function ImageFromAlbumClose() {
    document.getElementById('ImgSelector').style.display='none';
    if(document.getElementById('LightBoxContent').innerHTML=='') {
        document.getElementById('LightBox').style.display='none';
    }
}


