var req=null;
var READY_STATE_UNINITIALIZED=0;
var READY_STATE_LOADING=1;
var READY_STATE_LOADED=2;
var READY_STATE_INTERACTIVE=3;
var READY_STATE_COMPLETE=4;
var displayElement;
var onLoadCallback;


function showPD(show)
{
var anchorEl= getElementByBaseId('ddCaCategories');
	if(show && (anchorEl != null))
		positionPD(anchorEl);
	var el= document.getElementById('popDiv');
	document.getElementById('pdContent').scrollTop= 0;
	
	el.className= show?"pdShown":"hidden";
	// cover the 'select' objects in the text input panel
	if(ie6)
		coverFontDrops(el,show);
}
//-------------------------------------------------
function coverFontDrops(el,show)
{
	var elPop= $(el);
	var elCover= $('ie6cover');
	if(show)
	{
		var dims= elPop.getDimensions();
		elCover.setStyle({'width':dims.width+"px"});
		elCover.setStyle({'height':dims.height+"px"});
		var pos= elPop.positionedOffset();
		elCover.setStyle({'top':pos.top+"px"});
		elCover.setStyle({'left':pos.left+"px"});
		elCover.setStyle({'display':"block"});absLeft
	}
	else
	{
		elCover.setStyle({'width':"0px"});
		elCover.setStyle({'height':"0px"});
		elCover.setStyle({'display':"none"});
	}
}
//-------------------------------------------------
function showWait(show)
{
	var el= document.getElementById('idWait');
	el.className= show?"waitShown":"hidden";
}
//-------------------------------------------------
function showClipParams(show)
{
	var el= getElementByBaseId('caParamDiv');
	el.className= show?"capShown":"hidden";
	el= getElementByBaseId('caPreviewDiv');
	var className= "caPreviewDiv " + (show?"capShown":"hidden");
	el.className= className;
}
//-------------------------------------------------
function categoryChange(sel)
{
	var elPD= document.getElementById('pdContent');
	var elShow= document.getElementById('idCA-SelButton');
//	var sel= document.getElementById('StampDataInput1_cmbClipArtCategories');
	var index= sel.selectedIndex;
	if(index == 0)
	{
		elShow.enabled= false;
		var elSelectedClipName= getElementByBaseId('caImgName');
		elSelectedClipName.innerText= "";
		showClipParams(0);
		return;
	}
	elShow.enabled= true;
	var catName= sel.options[index].value;
  showWait(1);
	// take the ampersand out of the category name
	catName= escape(catName);
	var url= "http://"+window.location.host+"/srvClipArt.aspx";
  loadXMLDoc(url+"?cat="+catName+"&fmt=ul", elPD, onLoaded);
}
//-------------------------------------------------
function onLoaded(data,req)
{
	setTimeout("showWait(0);showPD(1)",100);
}
//-------------------------------------------------
function clipHov(el,over)
{
	var elName= document.getElementById('idStampName');
	//el.parentNode.style.backgroundColor= over?"#a0f0e0":"";
	if(over)
	{
		elName.textContent= el.title;	// for FF
		elName.innerHTML= el.title;		// for IE
		elName.style.display="inline";
	}
	else
		elName.style.display="none";
}
//-------------------------------------------------
function absLeft(el)
{
	if(el.style.position == 'relative')
		return 0;
	var pos= el.offsetLeft;
	var parent= el.parentElement;
	if(parent)
		pos += absLeft(parent);
	return pos;
}
//-------------------------------------------------
function absTop(el)
{
	if(el.style.position == 'relative')
		return 0;
	var pos= el.offsetTop;
	var parent= el.offsetParent;
	if(parent)
		pos += absTop(parent);
	return pos;
}
//-------------------------------------------------
// passed the anchor element to position relative to
function positionPD(elDD)
{
	var anchor= $(elDD);
	var elPD= $('popDiv');
	var elContent= $('pdContent');
	var pdHeight= 34;
	var pdWidth= 0;
	var dims= elContent.getDimensions();
	
	if(!dims.height)
	{
		dims.height= 250;
		dims.width= 350;
	}
	var anchorPos= anchor.positionedOffset();
	var anchorDims= anchor.getDimensions();
	var left= anchorPos.left +anchorDims.width -dims.width;
	if(left < 0)
		left= 5;
		
	var top= anchorPos.top -dims.height;
	//alert("left:"+left+", top:"+top);
	elPD.setStyle({'left':left+"px"});
	elPD.setStyle({'top':top+"px"});
}
//-------------------------------------------------
function dumpEl(e)
{
	var txt= "";
	var i= 0;
	for(prop in e)
	{
		if(e[prop] != null)
		{
			txt += (prop+":"+e[prop]+"\r\n");
			if(++i > 50)
			{
				alert("Next 50 lines:\r\n"+txt);
				txt= ""; i= 0;
			}
		}
	}
	alert(txt);
}
//-------------------------------------------------
var g_bCatLoaded= false;
function onLoadedCat(data,req)
{
	// process the xml 
	var elDD= document.getElementById('selDiv');
	var index= data.indexOf('<');
	var s= data.substring(index, data.lastIndexOf('>')+1);
	elDD.innerHTML= s;
	g_bCatLoaded= true;
	// move the popDiv over
	anchorEl= elDD;
	positionPD(anchorEl);
	showWait(0);
}
//-------------------------------------------------
function catClick(el)
{
	//alert("category clicked: "+el.value);
}
//-------------------------------------------------
function showButtonClicked(elShow)
{
	var elCategories= getElementByBaseId('ddCaCategories');
	var index= elCategories.selectedIndex;
	if(index == 0)
	{
		alert("Please select a category first");
		return;
	}
	if(!g_bCatLoaded)
	{
		var sel= getElementByBaseId('ddCaCategories');
		return categoryChange(sel);
	}
		
	showPD(1);
}
//-------------------------------------------------
function clipClick(el)
{
	showPD(0);
	var txt=el['title'];
	var elSelectedClipName= getElementByBaseId('caImgName');
	if(elSelectedClipName.innerText)
		elSelectedClipName.innerText= txt;
	else 
		elSelectedClipName.value= txt;
		
	//alert("clip clicked: "+ txt);
	// TODO: get the preview and show it
	var elPreviewImg= getElementByBaseId('caPreviewImage');
	elPreviewImg.src= el.src;
	
	showClipParams(1);
}
//-------------------------------------------------
function getElementByBaseId(simpleID)
{
	// The first div in the 'caSelect' element should be 'abc123'
	var caSel= document.getElementById('caSelect');
	if(caSel)
	{
		var elDiv= caSel.getElementsByTagName('div')[0];
		var mangledID= elDiv.id;
		if(mangledID.indexOf('abc123') >= 0)
			return document.getElementById(mangledID.replace('abc123',simpleID));
	}
		
	return document.getElementById(simpleID);
}
//-------------------------------------------------
function loadXMLDoc(url,el,onLoadCB) {
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("MSXML2.XMLHTTP.3.0");
    }
    if (req) {
				displayElement= el;
				if(onLoadCB) onLoadCallback= onLoadCB;
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    }
}

//-------------------------------------------------
function postHttpReq(url,el,onLoadCB,content) 
{
	if (window.XMLHttpRequest)
		req = new XMLHttpRequest();
	else if (window.ActiveXObject)
		req = new ActiveXObject("MSXML2.XMLHTTP.3.0");

	if (req) 
	{
		displayElement= el;
		if(onLoadCB) onLoadCallback= onLoadCB;
		req.onreadystatechange = processReqChange;
		req.open("POST", url, true);
		req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		req.send(content);
	}
}

//-------------------------------------------------
function processReqChange(){
  var ready=req.readyState;
  var data=null;
  if (ready==READY_STATE_COMPLETE)
	{
    data=req.responseText;
		if( displayElement ) displayElement.innerHTML= data;
		if( onLoadCallback ) onLoadCallback(data,req);
  }
	else
	{
    data="loading...["+ready+"]";
		if( displayElement ) displayElement.innerHTML= data;
	}
}

//-------------------------------------------------
// get an XML DOM doc object for use in processing XML data
//

function getXMLDoc()
{
	if (document.implementation && document.implementation.createDocument)
	{
		xmlDoc = document.implementation.createDocument("", "", null);
		//xmlDoc.onload = callBackFunc;
	}
	else if (window.ActiveXObject)
	{
		xmlDoc = new ActiveXObject("msxml2.DOMDocument.3.0");
//		xmlDoc.onreadystatechange = function () {
//			if (xmlDoc.readyState == 4) callBackFunc()
//		}
 	}
	else
	{
		alert('Your browser can\'t handle this script');
		return null;
	}
	return xmlDoc;
}

var ie6= false;
if(window.navigator.userAgent.indexOf("MSIE 6") >= 0)
	ie6= true;
	
if (typeof(Sys) !== 'undefined') 
	Sys.Application.notifyScriptLoaded(); 

var prevOnLoad= window.onload;
window.onload= myOnload;
function myOnload()
{
	if(typeof prevOnLoad == 'function')
		prevOnLoad();
	
	var el= getElementByBaseId('ClipPath');
	if(el)
	{
		var caPath= el.value;
		if((caPath != '') && (caPath != 'None'))
		{
			getElementByBaseId('caPreviewImage').src= caPath;
		}
	}
}

function myOnsubmit()
{
    var element = document.getElementById('ctl00_MainContentHolder_VariantsDisplay_inputTemplate1_frmChanged');
    if (element == null)
        element = document.getElementById('ctl00_MainContentHolder_StampInput_frmChanged');
    if (element == null)
        element = document.getElementById('ctl00_MainContentHolder_ctl00_frmChanged');
    if (StampdataIsDirty(document.forms[0]) == true) {
        element.value = '1';
    }
    else {
        element.value = '0';
    }
    
}


function StampdataIsDirty(frm) {
    for (var i = 0; i < frm.elements.length; i++) {
        var element = frm.elements[i];
        var type = element.type;
        if (element.id.indexOf("inputTemplate1") == -1) {
            continue;
        }
        if (type == "checkbox" || type == "radio") {
            if (element.checked != element.defaultChecked)
                return true;
        } else if (type == "hidden" || type == "password" || type == "text" || type == "textarea") {
        if (element.value != element.defaultValue)
                return true;
        } else if (type == "select-one" || type == "select-multiple") {
            for (var j = 0; j < element.options.length; j++) {
                if (element.options[j].selected != element.options[j].defaultSelected)
                    return true;
            }
        }
    }
    return false;
}
