// JScript File

function AddUserLinkBlock(linkDivId)
{
    var linkDiv = document.getElementById(linkDivId);
    if (linkDiv)
    {
        var inner = linkDiv.innerHTML;
        var newLink = '<table style="padding:0;margin:0;float:left;clear:both;border:solid 3px #000080"><tr><td>Label: </td><td><input name="urlLabels[]" type="text" size="60" value="Link label"/></td></tr><tr><td>Link: </td><td><input name="urlLinks[]" type="text" size="60" value="http://"/></td></tr></table>';
        inner =  inner + newLink;
        linkDiv.innerHTML = inner;        
    }
}


function setSelectedIndex(listbox, value)
{
    for(var i=0; i < listbox.options.length; i++)
    {
        if (listbox.options[i].value == value)
        {
            listbox.selectedIndex = i;
            return;
        }
    }
}

//var spryPanels = new Array();
//var spryGroups = new Array();
//var spryAccordians = new Array();
//var spryTabbedPanels = new Array();

//    function InitSpryDivs()
//    {
//        var divs = document.body.getElementsByTagName("div");
//        
//        for (var i=0; i < divs.length; i++)
//        {
//            switch(divs[i].className)
//            {
//                case "Accordion":
//                    spryAccordians[divs[i].id] = new Spry.Widget.Accordion(divs[i].id, {useFixedPanelHeights: false });
//                break;
//                
//                case "TabbedPanels":
//                break;
//
//                case "CollapsiblePanel":
//                break;
//
//                case "CollapsiblePanelGroup":
//                break;
//            }
//        }
//    }
    
//    function InitAccordians()
//    {
//        var divs = document.body.getElementsByTagName("div");
//        
//        for (var i=0; i < divs.length; i++)
//        {
//            if (divs[i].className == "Accordion")
//            {
//                spryAccordians[divs[i].id] = new Spry.Widget.Accordion(divs[i].id, {useFixedPanelHeights: false });
//            }
//        }
//    }
    
//    function InitTabbedPanels()
//    {
//        var divs = document.body.getElementsByTagName("div");
//        
//        for (var i=0; i < divs.length; i++)
//        {
//            if ((divs[i].className == "TabbedPanels") || (divs[i].className == "VTabbedPanels"))
//            {
//alert("site.js:init tabbed panel: " + divs[i].id);
//                spryTabbedPanels[divs[i].id] = new Spry.Widget.TabbedPanels(divs[i].id);
//            }
//        }
//    }
    
//    var ignorePanelList = new Array();
//    function InitCollapsiblePanels()
//    {
//        var divs = document.body.getElementsByTagName("div");
//        
//        for (var i=0; i < divs.length; i++)
//        {
//            if (divs[i].className == "CollapsiblePanel")
//            {
//                if (ignorePanelList[divs[i].id] != divs[i].id)
//                {
//                    var oContentDiv = Spry.Widget.CollapsiblePanel.prototype.getElementChildren(divs[i])[1];
//                    var bStartOpen = (oContentDiv.style.display != "none");
//                    spryPanels[divs[i].id] = new Spry.Widget.CollapsiblePanel(divs[i].id, { contentIsOpen: bStartOpen});
//                }
//            }
//        }
//    }
//    
//    function InitCollapsiblePanelGroups()
//    {
//        var divs = document.body.getElementsByTagName("div");
//        
//        for (var i=0; i < divs.length; i++)
//        {
//            if (divs[i].className == "CollapsiblePanelGroup")
//            {
//                childrenDivs = divs[i].getElementsByTagName("div");
//                for (var j=0; j < childrenDivs.length; j++) 
//                {
//                    if (childrenDivs[j].className == "CollapsiblePanel")
//                    {
//                        ignorePanelList[childrenDivs[j].id] = childrenDivs[j].id;
//                    }
//                }
//                spryGroups[divs[i].id] = new Spry.Widget.CollapsiblePanelGroup(divs[i].id, { contentIsOpen: false });
//            }
//        }
//    }
    
//    function CreateCollapsibleBySelector(selector)
//    {
//        Spry.$$(selector).forEach
//        (function(n)
//            {
//                var oContentDiv = Spry.Widget.CollapsiblePanel.prototype.getElementChildren(n)[1];
//                var contentDisplay = (oContentDiv.style.display != "none") && (oContentDiv.style.visibility != "hidden");
//                window[n.id] = new Spry.Widget.CollapsiblePanel(n.id, { contentIsOpen: contentDisplay } );
//            }
//        );
//    }

//    function CreateTabbedBySelector(selector)
//    {
//        Spry.$$(selector).forEach
//        (function(n)
//            {
//                window[n.id] = new Spry.Widget.TabbedPanels(n.id);
//            }
//        );
//    }

//    function CreateTextValidationBySelector(selector, validationType, validationOptions)
//    {
//        Spry.$$(selector).forEach
//        (function(n)
//            {
//          //  alert("text validation: " + n.id);
//                window["tv" + n.id] = new Spry.Widget.ValidationTextField(n.id, validationType, validationOptions );
//            }
//        );
//    }


    function InitSpry()
    {
//		alert("site.js: init spry --- this call deprecated");
		return;
        InitAccordians();
        InitCollapsiblePanelGroups();
        InitCollapsiblePanels();
        InitTabbedPanels();

        return true;
    }



function buildObjectDump(obj, level, indent) {
	var out = "";
	
	if (level > 20) return indent + "     too deep\n";
	
	for( field in obj) {
		var theType = typeof(obj[field]);
		if (theType == "object") {
			if (obj[field]) {
				if (obj[field].innerHTML) {
					out += indent + field + " = (object):\n" + indent + "    [HTML]:" + escape(obj[field].innerHTML) + "\n";
				}
				else {
					out += indent + field + " = (object):\n" + indent + buildObjectDump(obj[field], level + 1, indent + "    ");
				}
			}
			else {
				out += indent + field + " = (object): null\n";
			}
		}
		else if (theType == "function") {
				out += indent + field + " = [function] \n";			
		}
		else {
			try {
				out += indent + field + " = (" + theType + ") " + obj[field] + "\n";
			}
			catch(e) {
				out += indent + field + " = (" + theType + ") [error accessing] \n";
				
			}
		}
	}
	
	return out;
}

function dumpObject(leader, obj) {
	output = leader + ":\n" + buildObjectDump(obj,0, "");
	var newWindow = window.open();
	newWindow.document.write("<html><head><title>dump results</title></head><body><pre style=\"font-family:Courier New\">" + output + "</pre></body></html>");
}
function dumpResults(results) {
					output = typeof(results) + ":\n" 
							+ buildObjectDump(results,0, "");
	var newWindow = window.open();
	newWindow.document.write("<html><head><title>dump results</title></head><body><pre style=\"font-family:Courier New\">" + output + "</pre></body></html>");
}



// document.oncontextmenu = function(){return false;};

var PhotoClans = PhotoClans ? PhotoClans : {};
PhotoClans.Utilities = PhotoClans.Utilities ? PhotoClans.Utilities : {};
PhotoClans.Utilities.Browser = PhotoClans.Utilities.Browser ? PhotoClans.Utilities.Browser : {};
PhotoClans.Utilities.Forms = PhotoClans.Utilities.Forms ? PhotoClans.Utilities.Forms : {};

PhotoClans.Utilities.Browser = PhotoClans.Utilities.Browser ? PhotoClans.Utilities.Browser : {};

PhotoClans.Utilities.Browser.pageWidth = function ()
{
    return window.innerWidth != null
            ? window.innerWidth 
            : document.documentElement && document.documentElement.clientWidth 
                ? document.documentElement.clientWidth
                : document.body != null
                    ? document.body.clientWidth
                    : null;
}

PhotoClans.Utilities.Browser.pageHeight = function ()
{
    return window.innerHeight != null
            ? window.innerHeight
            : document.documentElement && document.documentElement.clientHeight
                ? document.documentElement.clientHeight
                : document.body != null
                    ? document.body.clientHeight
                    : null;
}

PhotoClans.Utilities.Browser.posLeft = function ()
{
    return typeof window.pageXOffset != 'undefined' 
                    ? window.pageXOffset
                    : document.documentElement && document.documentElement.scrollLeft
                        ? document.documentElement.scrollLeft
                        : document.body.scrollLeft
                            ? document.body.scrollLeft
                            : 0;
}

PhotoClans.Utilities.Browser.posTop = function ()
{
    return typeof window.pageYOffset != 'undefined' 
                ? window.pageYOffset
                : document.documentElement && document.documentElement.scrollTop
                    ? document.documentElement.scrollTop
                    : document.body.scrollTop
                        ? document.body.scrollTop
                        : 0;
}

PhotoClans.Utilities.Browser.QueryStringArgs = function ()
{
    var qsArgs = {};
    var qsPairs = document.location.search.substr(1).split("&");
    for (var i=0; i < qsPairs.length; i++)
    {
        var qsKeyValue = qsPairs[i].split("=");
        qsArgs[qsKeyValue[0]] = qsKeyValue[1];
    }
    return qsArgs;
}

PhotoClans.Utilities.Browser.OpenFullScreen = function (theURL)
{
    var appendStr = (theURL.indexOf("?") > 0) ? "&" : "?";
    var sizedURL = theURL + appendStr + "scrWidth=" + screen.width + "&scrHeight=" + screen.height;
    window.open(sizedURL,"fullScreen", 'location=0,menubar=0,status=0,resizeable=0,titlebar=0,toolbar=0,height=' + screen.height + ',width=' + screen.width + ',fullscreen=1, scrollbars=0');
    return false;
}

PhotoClans.Utilities.Browser.OpenDialogWindow = function (theURL, w, h)
{
    var appendStr = (theURL.indexOf("?") > 0) ? "&" : "?";
    var sizedURL = theURL + appendStr + "scrWidth=" + screen.width + "&scrHeight=" + screen.height;
    window.open(theURL,"dialog", 'resizeable=1,location=0,menubar=0,status=0,titlebar=0,toolbar=0,height=' + h + ',width=' + w + ',scrollbars=1');
    // resizeable=1,fullscreen=0, 
    return false;
}








PhotoClans.Utilities.Forms.ReplaceTextAreaWithEditor = function(textAreaId, wid, hgt)
{
	if (document.getElementById(textAreaId))
	{
		var oFCKeditor = new FCKeditor(textAreaId);
	    oFCKeditor.Config[ "ToolbarStartExpanded" ] = false;
		oFCKeditor.BasePath = "/FCKeditor/";
		oFCKeditor.ToolbarSet = 'nwpc-narrow' ;
		oFCKeditor.Width = wid;
		oFCKeditor.Height = hgt;
		oFCKeditor.ReplaceTextarea();
	}
}

PhotoClans.Utilities.Forms.ReplaceTextAreaWithTextEditor = function (txtAreaId)
{
	if (document.getElementById(txtAreaId))
	{
		var oFCKeditor = new FCKeditor(txtAreaId);
	    oFCKeditor.Config[ "ToolbarStartExpanded" ] = false;
		oFCKeditor.BasePath = "/FCKeditor/";
		oFCKeditor.ToolbarSet = 'nwpc' ;
		oFCKeditor.ReplaceTextarea();
	}
}

PhotoClans.Utilities.Forms.ExtractorFns = (PhotoClans.Utilities.Forms.ExtractorFns) ? PhotoClans.Utilities.Forms.ExtractorFns : 
	{
		
	};


PhotoClans.Utilities.Forms.Extractors = (PhotoClans.Utilities.Forms.Extractors) ? PhotoClans.Utilities.Forms.Extractors :
	{
//	var FormAllowedElements = {
//	};
		tagTypeExtractors : {
			"CHECKBOX" : {get: function(elem) { return elem.checked;}},
			"RADIO"    : {get: function(elem) { return elem.value;}},
			"TEXT"    : {get: function(elem) { return elem.value;}},
			"HIDDEN"    : {get: function(elem) { return elem.value;}},			
		},
		extractorFns: {
			"INPUT": {
				get: function (elem) {
						var retValue = null;
						var extractor = PhotoClans.Utilities.Forms.Extractors.tagTypeExtractors[elem.type.toUpperCase()];
						if (extractor) retValue = extractor.get(elem);
						
						return retValue;
					}
			},
			"TEXTAREA": {
				get: function ExtractTextAreaValue(elem) {
						var retValue = null;
						if (elem) {
							if (elem.name) {
								// look for our rich text editor
								if (typeof(FCKeditorAPI) == "object") {
									if (FCKeditorAPI.__Instances) {
										var oEditor = FCKeditorAPI.__Instances[elem.name];
										if (oEditor) {
											// this has an editor, so update the "real" text field.
											if (oEditor.GetParentForm) 
												oEditor.UpdateLinkedField();
										}
										else logDisplay("No editor found for " + elem.name);
									}
								}
							}
							if (elem.value) {
								retValue = elem.value;
							}
						}
						return retValue;
					}
			},
			"SELECT": {
				get: function(elem) {
						var retValue = "";
					
						if (elem) {
							if (elem.value) {
								var nIndex = elem.selectedIndex;
								if (typeof(nIndex) != "undefined") {
									if (nIndex > -1) {
										var optionValue = elem.options[nIndex].value;
										if (typeof(optionValue) != "undefined") retValue = elem.options[nIndex];
										else retvalue = elem.options[nIndex].text;
									}
								}
							}
						}
						
						return retValue;
					}
			}
		},
	};

PhotoClans.Utilities.Forms.Extractors.ExtractFormData = function(theForm, theObject) {
	// "INPUT|TEXTAREA|SELECT";
	var formFields = {};
	var index = 0;
	var children = theForm.elements;
	for (field in children) {
		if (children[field]) {
			var anElement = children[field];
			if (anElement.name) {
				if (anElement.type) {
					var formField = {
						nodeType : anElement.nodeName.toUpperCase(),
						element	 : anElement,
						id: anElement.id,
						name: anElement.name,
						type: anElement.type,
						value: anElement.value,
						checked: anElement.checked,
						selected: anElement.selectedIndex
					};
					if (PhotoClans.Utilities.Forms.Extractors.extractorFns[formField.nodeType]) {
						logDisplay("process: " + anElement.name, false);
						var elementHandler = PhotoClans.Utilities.Forms.Extractors.extractorFns[formField.nodeType];
						var theObjectItem = eval("theObject." + anElement.name);
						if (theObjectItem != undefined) {
					//		logDisplay("theObject." + anElement.name + "=elementHandler.get(" + formField.element.type + ");",false);
							eval("theObject." + anElement.name + "=elementHandler.get(formField.element);");
						}
						else {
							logDisplay("Object does not contain property: " + anElement.name,false);
						}
					}
				}
			}
		}
	}
	return theObject;
	
};

function communicationInProgress(inProgress) {
    // * This empties the log and shows the spinning indicator
    var log = $('log_res');
	
	if (inProgress) log.addClass('ajax-loading');
	else log.removeClass('ajax-loading');
	
	return true;
}




