// (c)2009 MrOrange

﻿if(typeof(mrO.utils)==='undefined'||mrO.utils===null){mrO.utils=function(){};mrO.utils.submitting=false;}
mrO.utils.isDefined=function(object){return!(typeof(object)==='undefined'||object===null);};mrO.utils.isUndefined=function(object){return typeof(object)==='undefined'||object===null;};mrO.utils.getServerHostname=function(){return window.location.hostname;};mrO.utils.JSONStringFromObject=function(obj){if(JSON.stringify){return JSON.stringify(obj);}
else{mrO.utils.writeToConsole("mrO.utils.getJSONStringFromObject: unable to locate JSON-parsing library");return null;}};mrO.utils.regexISO=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/;mrO.utils.regexMSAjax=/^\/Date\((d|-|.*)\)\/$/;mrO.utils.JSONDateTimeReviver=function(key,value){if(typeof value==='string'){var a=mrO.utils.regexISO.exec(value);if(a)
return new Date(Date.UTC(+a[1],+a[2]-1,+a[3],+a[4],+a[5],+a[6]));a=mrO.utils.regexMSAjax.exec(value);if(a){var b=a[1].split(/[-,.]/);return new Date(+b[0]);}}
return value;}
mrO.utils.JSONObjectFromString=function(str){if(JSON.parse){return JSON.parse(str,mrO.utils.JSONDateTimeReviver);}
else{mrO.utils.writeToConsole("mrO.utils.getJSONObjectFromString: unable to locate JSON-parsing library");return null;}};mrO.utils.getRequestParametersFromUrlString=function(requestUrl){var requestParams={};var requestParamArray=(requestUrl.split("?",2)[1]||"").split("#")[0].split("&")||[];for(var i=0;i<requestParamArray.length;i++){var param=requestParamArray[i].split("=");if(param[0]){requestParams[param[0]]=unescape(param[1].replace(/\+/g," "));}}
return requestParams;};mrO.utils.getWebServiceResponseData=function(response){if(this.isDefined(response.d)===false)
{if(mrO.page.debugging({sender:'mrO.utils.getWebServiceResponseData'})){mrO.utils.writeToConsole("mrO.utils.getWebServiceResponseData: Using .NET 2.0");}
return response;}
else if(typeof(response.d)==='string')
{if(mrO.page.debugging({sender:'mrO.utils.getWebServiceResponseData'})){mrO.utils.writeToConsole("mrO.utils.getWebServiceResponseData: Using .NET 3.5");}
return mrO.utils.JSONObjectFromString(response.d);}
else if(this.isDefined(response.d)===true)
{if(mrO.page.debugging({sender:'mrO.utils.getWebServiceResponseData'})){mrO.utils.writeToConsole("mrO.utils.getWebServiceResponseData: Using .NET 3.5, .d is an object, can this happen?");}
return response.d;}
else
{if(mrO.page.debugging({sender:'mrO.utils.getWebServiceResponseData'})){mrO.utils.writeToConsole("mrO.utils.getWebServiceResponseData: This should not happen!");}
return response;}};mrO.utils.getRequestParametersString=function(parameters){var getRequestParamsString="";for(var paramId in parameters){if(paramId!==""&&parameters[paramId]!==null){getRequestParamsString=getRequestParamsString+paramId+"="+parameters[paramId]+"&";}}
return getRequestParamsString;};mrO.utils.writeToConsole=function(message){try{if(console&&console.debug){console.debug(message);}}catch(err){}};mrO.utils.getObjectAsString=function(arrayObject){var arrayObjectString="";for(var arrayParam in arrayObject){arrayObjectString=arrayObjectString+arrayParam+": "+arrayObject[arrayParam]+"("+typeof(arrayObject[arrayParam])+")\n";}
return arrayObjectString;};mrO.utils.alertObject=function(arrayObject){alert(this.getObjectAsString(arrayObject));};mrO.utils.isElementVisible=function(element){if($(element).is(':hidden')===false&&$(element).is(':visible')===true){return true;}else{return false;}};mrO.utils.isElementActive=function(element){if(this.isElementVisible(element)&&$(element).is(':disabled')===false){return true;}else{return false;}};mrO.utils.URLEncodeString=function(str){if(typeof(str)==='string'){return escape(str);}else{return str;}};mrO.utils.URLDecodeString=function(str){if(typeof(str)==='string'){return unescape(str);}else{return str;}};mrO.utils.genericWebServiceError=function(error){mrO.utils.writeToConsole(mrO.utils.getObjectAsString(error));};mrO.utils.genericWebServiceTimeout=function(timeout){mrO.utils.writeToConsole(mrO.utils.getObjectAsString(timeout));};mrO.utils.callWebServiceWithData=function(webService,callback,arguments,parameters){arguments=mrO.getParameterArray(arguments);var dataValue="{'arguments': "+mrO.utils.JSONStringFromObject(arguments);if(mrO.utils.isDefined(parameters)){dataValue+=",'parameters':"+mrO.utils.JSONStringFromObject(parameters)}
dataValue+="}";$.ajax({type:"POST",url:webService,data:dataValue,contentType:"application/json; charset=utf-8",dataType:"json",success:callback,error:mrO.utils.genericWebServiceError,timeout:mrO.utils.genericWebServiceTimeout});};mrO.utils.callWebServiceWithDataFromElementById=function(webService,callback,elementId){var selector='#'+elementId;var element=$(selector)[0];if(element!==null){var data=new Array();if(mrO.utils.isUndefined(element)){mrO.utils.writeToConsole("calling webservice with unknown element: "+elementId);return;}else if(typeof(element)==='radio'||$(element).is("input:radio")){var groupName=element.name;var selectedButtonValue=$("input:radio[name="+groupName+"]:checked").val();data.push("dataFromElement:"+selectedButtonValue);mrO.utils.callWebServiceWithData(webService,callback,data);}else if(typeof(element)==='checkbox'||$(element).is("input:checkbox")){data.push("dataFromElement:"+$(element).is(':checked'));mrO.utils.callWebServiceWithData(webService,callback,data);}else{data.push("dataFromElement:"+$(element).val());mrO.utils.callWebServiceWithData(webService,callback,data);}}else{}};mrO.utils.callWebServiceWithDataFromElementsWithRelevance=function(webService,callback,elementsWithRelevance){var data=new Array();for(relevance in elementsWithRelevance){var selector='#'+elementsWithRelevance[relevance];var element=$(selector)[0];mrO.utils.writeToConsole("finding match for: "+relevance);if(element!==null){if(mrO.utils.isUndefined(element)){mrO.utils.writeToConsole("unknown element, id: "+selector);}else if(typeof(element)==='radio'||$(element).is("input:radio")){var groupName=element.name;var selectedButtonValue=$("input:radio[name="+groupName+"]:checked").val();data.push(relevance+":"+selectedButtonValue);mrO.utils.writeToConsole("pushed: "+relevance+":"+selectedButtonValue);}else if(typeof(element)==='checkbox'||$(element).is("input:checkbox")){data.push(relevance+":"+$(element).is(':checked'));mrO.utils.writeToConsole("pushed: "+relevance+":"+$(element).is(':checked'));}else{data.push(relevance+":"+$(element).val());mrO.utils.writeToConsole("pushed: "+relevance+":"+$(element).val());}}else{mrO.utils.writeToConsole("that's no object gdammit!");}}
mrO.utils.callWebServiceWithData(webService,callback,data);};mrO.utils.disableInvalidDropdownElements=function(dropDownID){$('#'+dropDownID).children().each(function(){if($(this).val()==''){this.setAttribute('disabled','disabled');}});};
