﻿
var debug = false;

function dsNewObject(island, typeName)
{
	var result = Object.clone(island.NewObjects[typeName]);
	if (debug)
		printObject(result);
	return result;
}

function ObjectToForm(formParentElement, instance)
{
	formParentElement.childElements().each(function(item)
	{
		if (item.attributes['field'] != null)
		{
			item.value = instance[item.attributes['field'].nodeValue];
		}
	});
}

function printObject(instance)
{
	//alert(Object.inspect(instance));
	var props = [];
	for (var prop in instance)
	    //alert(prop + ":" + instance[prop]);
		props.push(prop + ":" + instance[prop]);
	alert(props);
}

function FormToObject(instance, formParentElement)
{
	formParentElement.childElements().each(function(item)
	{
		if (item.attributes['field'] != null)
		{
			instance[item.attributes['field'].nodeValue] = $F(item);
		}
		else
		{
		    FormToObject(instance, item);
		}
	});

}

function OnAjaxRequest_Error(result)
{     
     
	if(Trail != null) Trail.hide();
	try
	{
		var exception = result._message.evalJSON().Exception;
		printObject(exception);
		
	
	}
	catch(exception)
	{
	    //printObject(result);
	        
	    while (result != null)
	    {
		    alert('Error occured during execution of your request. [' + result._message	+ ']');
		    result = result.InnerException;
		}   
	}	
}
  
function PopulateSelect(dataList, updatedItem, dataTextField, dataValueField, doNotAddFirst)
{      
    $(updatedItem).childElements().length=0;
    $(updatedItem).childElements().each(Element.remove);
    var shift = 0;
    if(!doNotAddFirst)
    {
        $(updatedItem).options[0] = new Option('Select One', '', false, false); 
        shift = 1;  
    }       
    dataList.each(function(p, index) {    
       var text = eval('dataList[' + index + '].'+ dataTextField);
       var value = eval('dataList[' + index + '].'+ dataValueField);
       $(updatedItem).options[index+shift] = new Option(text, value, false, false);
    });                                        
    if(!doNotAddFirst)
    {
        $(updatedItem).selectedIndex = 0;
    }                     
}

function HasData(value) {
	if (value == null)
		return false;
	var empty = /\w/;
    var result = empty.test(value);
    return result;
}

function ProcessWebSiteUrl(website)
{
    if(!HasData(website)) return null;    
    if(website != 'http://')
    {
        if(website.indexOf('http://',0) != 0)
        {
            website  = 'http://' + website;
            return website;
        }
        return website;
    }
    else
    {
        return null;
    }
}

function viewMore(shortData, fullData)
{
    $(shortData).style.display='none';
    $(fullData).style.display='block';
}

function viewLess(shortData, fullData)
{
    $(shortData).style.display='block';
    $(fullData).style.display='none';
}

function ParseSpecialCharactersString(val)
{
    var s = val.replace(/\\/gi,'\\\\');
    s = s.replace(/"/gi,'\\\"');
    s = s.replace(/'/gi,"\\\'");
    return s;
}

function PerformanceTracker(evalScript)
{
    var dStart = new Date();
    eval(evalScript);
    var dEnd = new Date();
    var r = dEnd.getTime() - dStart.getTime();
    alert("Total time: "+ r + " miliseconds");
}

function hideItemOnTimeout(elementName, timeout)
{
	window.setTimeout("$('" + elementName + "').addClassName('elHide');", timeout);
} 

function Rmz_Page_ClientValidate(validationGroup) {
    Page_InvalidControlToBeFocused = null;
    if (typeof(Page_Validators) == "undefined") {
        return true;
    }
    var i;
    for (i = 0; i < Page_Validators.length; i++) {
        Rmz_ValidatorValidate(Page_Validators[i], validationGroup, null);
    }
                
    ValidatorUpdateIsValid();
    ValidationSummaryOnSubmit(validationGroup);
    Page_BlockSubmit = !Page_IsValid;
    return Page_IsValid;
}

function Rmz_ValidatorValidate(val, validationGroup, event) {
    val.isvalid = true;
    if ((typeof(val.enabled) == "undefined" || val.enabled != false) && IsValidationGroupMatch(val, validationGroup)) {
        if (typeof(val.evaluationfunction) == "function") {
            val.isvalid = val.evaluationfunction(val);
            if(val.isvalid)
            {
                if(val.controltovalidate != null)
                    $(val.controltovalidate).removeClassName('txtRed');
            }
            else
            {
                if(val.controltovalidate != null)
                    $(val.controltovalidate).addClassName('txtRed');
            }
            if (!val.isvalid && Page_InvalidControlToBeFocused == null &&
                typeof(val.focusOnError) == "string" && val.focusOnError == "t") {
                ValidatorSetFocus(val, event);
            }
        }
    }
    ValidatorUpdateDisplay(val);
}

function UpdateHtmlFromJsonClass(items, parentElementMask)
{
    for(var j=0; j<items.length; j++)
    {
    var item = items[j];
    var updateMask = parentElementMask + ' ['+ item.ID +'=1]'; 
    var updateItems = $$(updateMask);
    if(updateItems.length > 0)
        updateItems[0].update(item.DisplayName);
        
        var itemLabelMask = parentElementMask + ' ['+ item.ID +'=2]'; 
        var itemLabels = $$(itemLabelMask);
        if(itemLabels.length > 0)
        {
            if(HasData(item.DisplayName))
            {
                itemLabels[0].show();
            }
            else
            {
                itemLabels[0].hide();
            }
        }
    }
}