/* Module_Language */
function changeLanguage(code)
{
	var append = (window.location.href.indexOf("?") == -1) ? "?" : "&";
	if (window.location.href.indexOf("change_language_to=") == -1)
	{
		append += "change_language_to=";
		window.location.href = window.location.href + append + code;
	}
	else
	{
		window.location.href = window.location.href.replace(/change_language_to=[a-z]{3}/, "change_language_to="+code);
	}
}

/* Ajax */
function getAjaxObject()
{
	var xmlHttp;
	try { // Firefox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest();
	}
	catch(e) { // Internet Explorer
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
    		catch (e) {
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
	}
	
	return xmlHttp;
}

function ajaxUpdate(id, url)
{
	var ajax = getAjaxObject();
	ajax.open("GET", url, true);
	ajax.onreadystatechange = function ()
	{
		if (ajax.readyState == 4)
		{
			var link = document.getElementById(id);
			link.innerHTML = ajax.responseText;
		}
	};
	ajax.send(null);
	return true;
}

function ajaxUpdateSync(id, url)
{
	var result = ajaxSync(url);
	if (result === false) {
		return false;
	}
	var link = document.getElementById(id);
	link.innerHTML = result;
	return true;
}

function ajaxSync(url)
{
	var ajax = getAjaxObject();
	
	ajax.open('GET', url, false);
	ajax.send(null);
	if(ajax.status == 200)
	{
		return ajax.responseText;
	}
	return false;
}

/* Selects and Options */
function getSelectOptions(selectID)
{
	return document.getElementById(selectID).options;
}

function getSelectedValue(selectID)
{
	var select = document.getElementById(selectID);
	return select.options[select.selectedIndex].value;
}

function setOptionSelected(options, selectedValue)
{
	var len = options.length;
	var sel = 0;
	for (var i = 0; i < len; i++)
	{
		if (options[i].value == selectedValue)
		{
			options[i].selected = true;
			break; 
		}
	}
	return true;
}

function addOption(select, text, value)
{
	var option = document.createElement('option');
	option.text = text;
	option.value = value;
	try {
		select.add(option, null);
	}
	catch(ie) {
		try {
			select.add(option);
		}
		catch(huh) {
			alert("Fatal JS error addOption()");
			return false;
		}
	}
	return true;
}

function clearSelect(select)
{
	var len = select.options.length;
	while (len > 0)
	{
		len--;
		select.remove(len);
	}
}

/* Hide container */
function toggleHidden(id)
{
	try {
		var div = document.getElementById(id);
		if (div.style.display == "") {
			div.style.display = "none";
		}
		div.style.display = div.style.display == "none" ? "block" : "none";
		return true;
	}
	catch (ex) {
		return false;
	}
}

/**
*  Javascript sprintf
*  http://www.webtoolkit.info/
**/
var sprintfWrapper = {

    init : function () {

        if (typeof arguments == "undefined") { return null; }
        if (arguments.length < 1) { return null; }
        if (typeof arguments[0] != "string") { return null; }
        if (typeof RegExp == "undefined") { return null; }

        var string = arguments[0];
        var exp = new RegExp(/(%([%]|(\-)?(\+|\x20)?(0)?(\d+)?(\.(\d)?)?([bcdfosxX])))/g);
        var matches = new Array();
        var strings = new Array();
        var convCount = 0;
        var stringPosStart = 0;
        var stringPosEnd = 0;
        var matchPosEnd = 0;
        var newString = '';
        var match = null;

        while (match = exp.exec(string)) {
            if (match[9]) { convCount += 1; }

            stringPosStart = matchPosEnd;
            stringPosEnd = exp.lastIndex - match[0].length;
            strings[strings.length] = string.substring(stringPosStart, stringPosEnd);

            matchPosEnd = exp.lastIndex;
            matches[matches.length] = {
                match: match[0],
                left: match[3] ? true : false,
                sign: match[4] || '',
                pad: match[5] || ' ',
                min: match[6] || 0,
                precision: match[8],
                code: match[9] || '%',
                negative: parseInt(arguments[convCount]) < 0 ? true : false,
                argument: String(arguments[convCount])
            };
        }
        strings[strings.length] = string.substring(matchPosEnd);

        if (matches.length == 0) { return string; }
        if ((arguments.length - 1) < convCount) { return null; }

        var code = null;
        var match = null;
        var i = null;

        for (i=0; i<matches.length; i++) {

            if (matches[i].code == '%') { substitution = '%' }
            else if (matches[i].code == 'b') {
                matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(2));
                substitution = sprintfWrapper.convert(matches[i], true);
            }
            else if (matches[i].code == 'c') {
                matches[i].argument = String(String.fromCharCode(parseInt(Math.abs(parseInt(matches[i].argument)))));
                substitution = sprintfWrapper.convert(matches[i], true);
            }
            else if (matches[i].code == 'd') {
                matches[i].argument = String(Math.abs(parseInt(matches[i].argument)));
                substitution = sprintfWrapper.convert(matches[i]);
            }
            else if (matches[i].code == 'f') {
                matches[i].argument = String(Math.abs(parseFloat(matches[i].argument)).toFixed(matches[i].precision ? matches[i].precision : 6));
                substitution = sprintfWrapper.convert(matches[i]);
            }
            else if (matches[i].code == 'o') {
                matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(8));
                substitution = sprintfWrapper.convert(matches[i]);
            }
            else if (matches[i].code == 's') {
                matches[i].argument = matches[i].argument.substring(0, matches[i].precision ? matches[i].precision : matches[i].argument.length)
                substitution = sprintfWrapper.convert(matches[i], true);
            }
            else if (matches[i].code == 'x') {
                matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
                substitution = sprintfWrapper.convert(matches[i]);
            }
            else if (matches[i].code == 'X') {
                matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
                substitution = sprintfWrapper.convert(matches[i]).toUpperCase();
            }
            else {
                substitution = matches[i].match;
            }

            newString += strings[i];
            newString += substitution;

        }
        newString += strings[i];

        return newString;

    },

    convert : function(match, nosign){
        if (nosign) {
            match.sign = '';
        } else {
            match.sign = match.negative ? '-' : match.sign;
        }
        var l = match.min - match.argument.length + 1 - match.sign.length;
        var pad = new Array(l < 0 ? 0 : l).join(match.pad);
        if (!match.left) {
            if (match.pad == "0" || nosign) {
                return match.sign + pad + match.argument;
            } else {
                return pad + match.sign + match.argument;
            }
        } else {
            if (match.pad == "0" || nosign) {
                return match.sign + match.argument + pad.replace(/0/g, ' ');
            } else {
                return match.sign + match.argument + pad;
            }
        }
    }
}

var sprintf = sprintfWrapper.init;


function cmCheckURLField(inputid)
{
	var elementInput = document.getElementById(inputid);

	if (elementInput == null) {
		return false;
	}
	
	var url = elementInput.value;
	
	if (url.indexOf('http://')===false && url.indexOf('https://')===false) {
		url = 'http://' + url;
	}
	requestURL = '/index.php?module=ViewAds&ajax=true&checkurl=y&url='+escape(url);
	var ajax = getAjaxObject();
	ajax.open('GET', requestURL, true);
	ajax.onreadystatechange = function ()
	{
		if (ajax.readyState == 4)
		{
			var input = document.getElementById('cmba_url');
			var color = ajax.responseText == '1' ? '#00ff00' : '#ff0000';
			input.style.background = color;
		}
	};
	ajax.send(null);
	return true;
}
