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;
var bUploading = false;

function showCASelect(show) {
    var el = document.getElementById('btnSelectClipart');
    el.className = !show ? "btnShowInline" : "capHidden";
    el = document.getElementById('divUploadArtExists');
    el.className = !show ? "btnShowInline" : "capHidden";
    el = document.getElementById('caSelect')
    el.className = show ? "capShown" : "capHidden";
}
function showCAUPload(show) {
    var el = document.getElementById('btnUploadClipart');
    el.className = !show ? "btnShowInline" : "hidden";
    el = getElementByBaseId('pnlUploadClipArt')
    el.className = show ? "capShown" : "capHidden";
    // Always hide the message once the the panel state changes
    var val = document.getElementById('caMsgId').value;
    el = document.getElementById(val);
    if (el != null)
        el.className = "hidden";
}
function showHideClipart(show) {
    var el = document.getElementById('btnHideClipart');
    el.className = show ? "btnShowInline" : "capHidden";
}


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 CheckBiggerSmaller()
{
}

function categoryChange(sel) {
    _categoryChange(sel, false)
}

function _categoryChange(sel, bStateOnly)
{
	var elPD= document.getElementById('pdContent');
	var elShow= document.getElementById('idCA-SelButton');
//	var sel= document.getElementById('StampDataInput1_cmbClipArtCategories');
	var index= sel.selectedIndex;
	if(index == 0) {
	    var btnEl = getElementByBaseId('MakeBigger');
	    if (btnEl != null)
	        btnEl.className = "";
	    btnEl = getElementByBaseId('MakeSmaller');
	    if (btnEl != null)
	        btnEl.className = "";
	    if (bStateOnly == false) {
	        elShow.enabled = false;
	        var elSelectedClipName = getElementByBaseId('caImgName');
	        elSelectedClipName.value = "";
	        elSelectedClipName = getElementByBaseId('caImgDisplayName');
	        if (elSelectedClipName.innerText != undefined)
	            elSelectedClipName.innerText = "";
	        else
	            elSelectedClipName.textContent = "";
	        showClipParams(0);
	    }
		return;
	}
	var btnEl = getElementByBaseId('MakeBigger');
	if (btnEl != null)
	    btnEl.className = "hidden";
	btnEl = getElementByBaseId('MakeSmaller');
	if (btnEl != null)
	    btnEl.className = "hidden";
	if (bStateOnly == false) {
	    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);    
    // Figure out which parts of the panels to show
	
}
//-------------------------------------------------
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, false);
	}
		
	showPD(1);
}
//-------------------------------------------------
function showClipartClicked(Show) {
    showCASelect(1);
    showCAUPload(0);
    showHideClipart(1);
	var elCategories= getElementByBaseId('ddCaCategories');
	if (Show == 1) {
	    elCategories[elCategories.length - 1].selected = "1";
	    
	}
	var index = elCategories.selectedIndex;
	if (index != 0) {
	    showClipParams(1);
	}
	if (Show == 1) {
	    _categoryChange(elCategories, false);
	}
}
//-------------------------------------------------
function showUploadClipartClicked(Show) {
    showCASelect(0);
    showCAUPload(1);
    showHideClipart(1);
    showClipParams(0);
}
//-------------------------------------------------
function hideClipartClicked(Show) {
    showCASelect(0);
    showCAUPload(0);
    showHideClipart(0);
    showClipParams(0);
}


//-------------------------------------------------
function showSizeType(strSize) {
    var dd = getElementByBaseId('ddCaSize');
    var lbl = document.getElementById('lblCaSize');
    if (strSize == '') {
        dd.className = 'btnShowInline';
        lbl.className =  'capHidden';
    }
    else {
        dd.className = 'capHidden';
        lbl.className = 'btnShowInline';
        if (lbl.innerText != undefined)
            lbl.innerText = strSize;
        else
            lbl.textContent = strSize;
    }
    
}

function clipClick(el) {
    showPD(0);
	var txt=el['title'];
	var elSelectedClipName = getElementByBaseId('caImgName');
	elSelectedClipName.value= txt;
	elSelectedClipName = getElementByBaseId('caImgDisplayName');
	if (elSelectedClipName.innerText != undefined)
	    elSelectedClipName.innerText = txt;
	else
	    elSelectedClipName.textContent = txt;
		
	//alert("clip clicked: "+ txt);
	// TODO: get the preview and show it
    var elPreviewImg = getElementByBaseId('caPreviewImage');
    elPreviewImg.src = el.src;
    // See if we need to show the size dropdown or a static size.
    showSizeType(el.parentElement.id);
	showClipParams(1);
}
//-------------------------------------------------
function getElementByBaseId(simpleID)
{
	// The second div in the 'caSelect' element should be 'abc123'
	var caSel= document.getElementById('caSelect');
	if(caSel)
	{
		var elDiv= caSel.getElementsByTagName('div')[1];
		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 pageLoad() {
    myOnload();
}

function myOnload()
{
	if(typeof prevOnLoad == 'function')
		prevOnLoad();
    var elpnl = getElementByBaseId('pnlClipArt');
    if (elpnl != null)
        elpnl.className = '';

	var el= getElementByBaseId('ClipPath');
	if (el) {
	    var caPath = el.value;
	    if ((caPath != '') && (caPath != 'None')) {
	        getElementByBaseId('caPreviewImage').src = caPath;
	    }
	}
	var elSize = getElementByBaseId('ClipSize');
	if (elSize) {
	    showSizeType(elSize.value);
	}
	var elinitial = getElementByBaseId('InitialCAPanelState');
	if (elinitial != null) {
	    if (elinitial.value == '1') {
	        showClipartClicked(0);
	    }
	    else if (elinitial.value == '2') {
	        showUploadClipartClicked(1);
	    }
    }
    var elCategories = getElementByBaseId('UserArtAvailable');
    if (elCategories != null && elCategories.value == '1') {
        var el1 = document.getElementById('btnExistingUploadedClipart');
        el1.className = "btnShowInline";
    }
    var elSelectedClipName = getElementByBaseId('caImgName');
    var elDisplayClipName = getElementByBaseId('caImgDisplayName');
    if (elDisplayClipName != null) {

        if (elDisplayClipName.innerText != undefined)
            elDisplayClipName.innerText = elSelectedClipName.value;
        else
            elDisplayClipName.textContent = elSelectedClipName.value;
    }
    var sel = getElementByBaseId('ddCaCategories');
//     el = getElementByBaseId('caMsg')
    //     el.className = "";
    if (sel != null)
        return _categoryChange(sel, true);
    return true;
}

function enableAllButtons(bEnable) {
    var frm = document.forms[0];
    for (var i = 0; i < frm.elements.length; i++) {
        var element = frm.elements[i];
        var type = element.type.toLowerCase();
        if (type == "submit" || type == "button") {
            if (element.id.indexOf("btnCancel") == -1) {
                element.disabled = bEnable ? false : true;
            }
        }
        else if (type == "image") {
        element.className = bEnable ? "" : "hidden";
    }
        
    }
}
function enableCancelButton(bEnable) {
    var frm = document.forms[0];
    for (var i = 0; i < frm.elements.length; i++) {
        var element = frm.elements[i];
        var type = element.type.toLowerCase();
        if (type == "submit" || type == "image") {
            if (element.id.indexOf("btnCancel") != -1) {
                element.disabled = bEnable ? false : true;
            }
        }
    }
}


function myOnsubmit()
{
    var element = document.getElementById('ctl00_MainContentHolder_VariantsDisplay_inputTemplate1_frmChanged');
    if (element == null)
        element = document.getElementById('ctl00_MainContent_VariantsDisplay_inputTemplate1_frmChanged');
    if (element == null)
        element = document.getElementById('ctl00_MainContent_EditLineVariantsDisplay_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';
    }
//     if (bUploading && !kw.ProgressDisplay.IsInSubmit) {
//         alert("You must cancel the upload before you can submit changes");
//         return false;
//     }
        
    return true;
}

function SubmitUpload() {
    if (typeof(Page_Validators) != "undefined") {
        for (var i = 0; i < Page_Validators.length; i++) {
            var val = Page_Validators[i];
            ValidatorEnable(val, false);
        }
    }
    kw.get(document.getElementById('UploadCtlId').value).submit();
    bUploading = true;
    enableAllButtons(false);
}
function CancelUpload() {
    kw.get(document.getElementById('UploadCtlId').value).cancel();
    bUploading = false;
    enableAllButtons(true);
}


function SlickUpload_OnClientProgressUpdate(data) {
//     var postProcessProgress = document.getElementById("postProcessProgress");
    if (data.state == "Complete") {
        enableCancelButton(false);
//         kw.get(document.getElementById('UploadCtlId').value).executeAfterUploadPostBack();
    }
    if (data.state == "PostProcessingComplete") {
        bUploading = false;
        enableAllButtons(true);
        var el = document.getElementById('btnUploadClipart');
        el.className = "btnShowInline";
    }
    
    // if we're postprocessing now, show the postprocessing progress section
//     if (postProcessProgress.style.display == "none" && data.state == "PostProcessing") {
//         var fileSelectText = document.getElementById("fileSelectText");
//         var uploadProgress = document.getElementById("uploadProgress");
// 
//         fileSelectText.style.display = uploadProgress.style.display = "none";
//         postProcessProgress.style.display = "";
//     }
}


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 && element.id.indexOf("StampInput") == -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;
}



