﻿/*
	WebTycon JavaScript library 
	
	Core functionss
*/

$WT = {
};

$WT.rootUrl = '';

$wt = $WT;
$Wt = $WT;

$WT.get = function (el) {
	return document.getElementById(el);
};

$WT.isset = function (obj) {
	return obj !== undefined;
};

$WT.isundef = function (obj) {
	return obj === undefined;
};

$WT.oneOf = function (testVal, defVal) {
	return ($WT.isset(testVal) ? testVal : defVal);
};

$WT.getSubarray = function (array, iIndexA, iIndexB) {
	if (iIndexA < 0) iIndexA = 0;
	if (iIndexB == null || iIndexB > array.length) iIndexB = array.length;
	if (iIndexA == iIndexB) return [];
	var aReturn = [];
	for (var i = iIndexA; i < iIndexB; i++) {
		aReturn.push(array[i]);
	}
	return aReturn;
};

$WT.addScript = function (src, charset) {
	try {
		var ss = '<scr' + 'ipt type="text/javascript" language=JavaScript charset="' + $WT.oneOf(charset, "utf-8") + '" src="' + src + '"></scr' + 'ipt>';
		document.write(ss);
	} catch (e) {
		alert("Exception in 'addScript' : " + e);
	}
};

$WT.loadScript = function (src, charset, onload) {
	var script = $("<script>");
	script.attr({
		"src": src,
		"charset": $WT.oneOf(charset, "utf-8"),
		"async": "true"
	});
	script.ready(function () {
		if ($WT.isset(onload))
			onload();
	});
	script.appendTo($(document.body));
};

$WT.addCSS = function (src, charset) {
	try {
		var ss = '<li' + 'nk rel="stylesheet" type="text/css" charset="' + $WT.oneOf(charset, "utf-8") + '" href="' + src + '" />';
		document.write(ss);
	} catch (e) {
		alert("Exception in 'addCSS' : " + e);
	}
};

$WT.evalJSON = function (value) {
	return eval("(" + value + ")");
};

$WT.loadScript = function (allScripts, curIndex, len) {
	var curScript = $(allScripts[curIndex]);
	$.get(curScript.attr("src"), function (response) {
		try {
			eval(response);
		} catch (e) {
		}
		curIndex++;
		if (curIndex != len)
			$WT.loadScript(allScripts, curIndex, len);
	});
};

$WT.reloadScripts = function () {
	var scripts = $("script");
	var len = scripts.length;
	var curIndex = 0;
	$WT.loadScript(scripts, curIndex, len);
};

$WT.intersect = function (arr1, arr2) {
	var result = [];
	for (var i = 0; i < arr1.length; i++) {
		for (var j = 0; j < arr2.length; j++) {
			if (arr1[i] == arr2[j])
				result.push(arr1[i]);
		}
	}
	return result;
};

$WT.dateDiff = function (dt1, dt2) {
	if (dt1 > dt2)
		return dt1 - dt2;
	return dt2 - dt1;
};


$WT.removeFromArray = function (arr, from, to) {
	var rest = arr.slice((to || from) + 1 || this.length);
	arr.length = from > 0 ? arr.length + from : from;
	return arr.push.apply(arr, rest);
}

try {
	$WT._xmlSerializer = new XMLSerializer();
} catch (e) {
}

$WT.getRawStringFromStringOrXML = function (stringOrXML) {
	var result = stringOrXML;	
	if (typeof (stringOrXML) == 'object') {
		var rawString = $WT._xmlSerializer.serializeToString(stringOrXML).replace('<?xml version="1.0"?>', '');
		result = rawString;
	}	
	return result;
};

$WT.callOrEval = function (funcBodyOrStr) {
	if (typeof (funcBodyOrStr) == 'function')
		return funcBodyOrStr.call();
	return eval(funcBodyOrStr);
};
