function ajax_create() {
	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 ajax_send(script, attributes, return_fun) {
	var url, xmlHttp, params="", key;

	url = "scripts/" + script;
	for (key in attributes) {
		params = addPostParam(params, key, attributes[key]);
	}

	xmlHttp = ajax_create();
	if (return_fun != null && return_fun != undefined) {
		xmlHttp.onreadystatechange = function() {
										if (xmlHttp.readyState==4) {
											return_fun(xmlHttp.responseText);
										}
									}
	}
	xmlHttp.open("POST", url, true);
	//Send the proper header information along with the request
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");
	xmlHttp.send(params);
}

function addPostParam(params, param, value) {
	var result = params;
	if (result.length > 0)
		result += "&";
	result += param + "=" + strip_special(value);

	return result;
}

function init_page(page) {

}

function global_login() {
	var attributes = new Array();
	attributes['user'] = document.getElementById("login_email").value;
	attributes['pass'] = document.getElementById("login_password").value;
	attributes['act'] = 1;
	ajax_send("login.php", attributes, global_loginDone);
}

function global_logout() {
	var attributes = new Array();
	attributes['act'] = 2;
	ajax_send("login.php", attributes, global_loginDone);
}

function global_loginDone(response) {
	if (response.length > 0)
		alert(response);
	else
		location.reload(true);
}

function edit_loadGeneric(type, id) {
	var attributes = new Array();
	attributes['contentID'] = id;
	attributes['contentType'] = type;
	document.getElementById("editPanel").innerHTML = "Loading...";
	ajax_send("edit_generic.php", attributes, edit_loadPageDone);

	document.getElementById("content").scrollTop = 0;
}

function edit_loadGenericList(type, name, title, order) {
	var attributes = new Array();
        attributes['orderField'] = order;
        attributes['nameField'] = name;
	attributes['titleField'] = title;
	attributes['contentType'] = type;
	document.getElementById("editPanel").innerHTML = "Loading...";
	ajax_send("view_generic.php", attributes, edit_loadPageDone);

	document.getElementById("content").scrollTop = 0;
}

function edit_loadPage(page, script) {
	var attributes = new Array();
	attributes['id'] = page;
	document.getElementById("editPanel").innerHTML = "Loading...";
	ajax_send(script, attributes, edit_loadPageDone);

	document.getElementById("content").scrollTop = 0;
}

function edit_loadPageDone(response) {
	var editPanel = document.getElementById("editPanel");
	editPanel.innerHTML = response;

	if (document.getElementById("editContent") != null) {
		var oFCKeditor = new FCKeditor( 'editContent' ) ;
		oFCKeditor.BasePath = "/fckeditor/" ;
		oFCKeditor.ReplaceTextarea() ;
	}

	/*if (editPanel) {
		var editor = FCKEDITOR.replace('editContent', {
			toolbar : [
				[ 'Source', '-', 'Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-','Link','Unlink','Anchor'],
				['NumberedList','BulletedList','-','Outdent','Indent','Blockquote','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
				['Styles','Format','Font','FontSize','TextColor','BGColor','Image','Flash','Table','HorizontalRule','Undo','Redo','-','Find','Replace','PasteFromWord', 'SpellChecker']
			],
			height : "500px"
		});
	}*/
}

function edit_savePage(script) {
	var attributes = new Array();
	var fields = document.getElementsByName("editFields"), i;

	for (i=0;i<fields.length;i++)
            attributes[fields[i].getAttribute("field")] = fields[i].value;

	if (typeof FCKeditorAPI != 'undefined')
            if (FCKeditorAPI.GetInstance('editContent') != null)
                attributes['text'] = FCKeditorAPI.GetInstance('editContent').GetData();

	ajax_send(script, attributes, edit_savePageDone);

	var errorsDiv = document.getElementById("editErrors");
	errorsDiv.innerHTML = "שומר...";
	errorsDiv.style.display = "block";
	errorsDiv.className = "success";
}

function edit_savePageDone(response) {
	var errorsDiv = document.getElementById("editErrors");
	var fields = document.getElementsByName("editFields"), i;
	for (i=0;i<fields.length;i++)
		fields[i].style.background = "white";

	errorsDiv.innerHTML = "";
	errorsDiv.style.display = "block";

	if (response.length > 0) {
		errorsDiv.className = "errors";
		var parts = response.split("|");
		var i;
		for (i=0;i<parts.length-1;i+=2) {
			document.getElementById(parts[i]).style.background = "#ff9999";
			errorsDiv.innerHTML += parts[i+1]+"<br>";
		}
	} else {
		errorsDiv.className = "success";
		errorsDiv.innerHTML = "השמירה הסתיימה בהצלחה.";
		if (document.getElementById("editNewPage"))
			document.getElementById("editNewPage").value = 0;
		if (document.getElementById("editIsNew"))
			document.getElementById("editIsNew").value = 0;
		try {
			document.getElementById("editOrigPage").value = document.getElementById("editName").value;
		} catch (e) {}
		edit_reloadFileList();
	}
}

function edit_reloadFileList() {
	ajax_send("reload_file_list.php", new Array(), edit_reloadFileListDone);
}

function edit_reloadFileListDone(response) {
	document.getElementById("main_nav").innerHTML = response;
}

function edit_deletePage(type) {
	if (confirm("מחיקת העמוד היא פעולה סופית שאי אפשר לשחזר\nהאם למחוק את העמוד?")) {
		var attributes = new Array();
		var fields = document.getElementsByName("editFields"), i;

		for (i=0;i<fields.length;i++)
			attributes[fields[i].getAttribute("field")] = fields[i].value;
		attributes['type'] = type;
		ajax_send("delete_item.php", attributes, edit_deletePageDone);
		document.getElementById("editPanel").innerHTML = "העמוד נמחק.";
	}
}

function edit_deletePageDone(response) {
	edit_reloadFileList();
}

function edit_toggleCategory(cat) {
	var parent = cat.parentNode.parentNode;
	var children = parent.childNodes;
	var i, child;

	for (i=0;i<children.length;i++) {
		child = children[i];
		if (child == cat.parentNode) {
			break;
		}

		if (child.getAttribute("type") != "parent")
			child.style.display = "none";
	}
	for (i=i+1;i<children.length;i++) {
		child = children[i];
		if (child.getAttribute("type") == "parent")
			break;

		if (child.style.display == "")
			child.style.display = "none";
		else
			child.style.display = "";
	}
	for (i=i+1;i<children.length;i++) {
		child = children[i];
		if (child.getAttribute("type") != "parent")
			child.style.display = "none";
	}
}

function contact_validate() {
	var items = new Array('name', 'email', 'phone', 'text');
	var obj, errors=0;

	for (var item in items) {
            obj = document.getElementById("contact_" + items[item]);
            if (obj == null)
                continue;
            if (obj.getAttribute("required") == 1) {
                if (obj.value.length == 0) {
                    obj.className = "error";
                    errors++;
                } else {
                    obj.className = "";
                }
            }
	}

	return (errors==0);
}

var fadeOutObj = null;
var fadeInObj = null;
var fading = false;
var fadeSpeed = 25;

function fadeSwitch() {
	if (!fadeInObj)
		return;
	if (fading)
		return;


	fading = true;


	if (fadeInObj.style.MozOpacity != undefined) { //Firefox
		if (fadeOutObj)
			fadeOutObj.style.MozOpacity = 1;
		fadeInObj.style.MozOpacity = 0;
	} else if (fadeInObj.filters != undefined) { //IE
		if (fadeOutObj)
			fadeOutObj.style.filter = "alpha(opacity=100)";
		fadeInObj.style.filter = "alpha(opacity=0)";
	} else { //Doesn't support fade effects
		if (fadeOutObj)
			fadeOutObj.style.display = 'none';
		fadeInObj.style.display = '';
		fading = false;
		return;
	}
	fadeInObj.style.display = '';

	if (fadeOutObj)
		fadeOutObj.setAttribute("fade", 100);
	fadeInObj.setAttribute("fade", 0);

	setTimeout("fadeStep()", fadeSpeed);
}

function fadeStep() {
	var fadeOutVal
	if (fadeOutObj)
		fadeOutVal = Number(fadeOutObj.getAttribute("fade"));
	else
		fadeOutVal = 0;

	var fadeInVal = Number(fadeInObj.getAttribute("fade"));

	fadeOutVal -= 10;
	fadeInVal += 10;

	if (fadeInObj.style.MozOpacity != undefined) { //Firefox
		if (fadeOutObj)
			fadeOutObj.style.MozOpacity = fadeOutVal / 100;
		fadeInObj.style.MozOpacity = fadeInVal / 100;
	} else if (fadeInObj.filters != undefined) { //IE
		if (fadeOutObj)
			fadeOutObj.style.filter = "alpha(opacity=" + fadeOutVal + ")";
		fadeInObj.style.filter = "alpha(opacity=" + fadeInVal + ")";
	}

	if (fadeOutObj)
		fadeOutObj.setAttribute("fade", fadeOutVal);
	fadeInObj.setAttribute("fade", fadeInVal);

	if (fadeOutVal > 0 || fadeInVal < 100)
		setTimeout("fadeStep()", fadeSpeed);
	else {
		if (fadeOutObj)
			fadeOutObj.style.display = 'none';
		fadeOutObj = null;
		fadeInObj = null;
		fading = false;
	}
}

var isThumbnailsMoving = false;
function thumbnails_move(delta) {
	var scroller = document.getElementById("thumbnails_inner");
	var to = Number(scroller.getAttribute("movex"));
	var width = Number(scroller.style.width.substr(0, scroller.style.width.length-2));

	to += delta;

	if (to < (0-width) + 42)
		to = (0-width) + 42;
	if (to > 0)
		to = 0;

	scroller.setAttribute("movex", to);

	if (!isThumbnailsMoving) {
		thumbnails_start();
	}
}

var mousedown=0;

function thumbnails_next() {
	thumbnails_move(-100);
}

function thumbnails_back() {
	thumbnails_move(100);
}

function thumbnails_start() {
	isThumbnailsMoving = true;
	thumbnails_tick();
}

function thumbnails_tick() {
	var scroller = document.getElementById("thumbnails_inner");
	var to = Number(scroller.getAttribute("movex"));
	var right = Number(scroller.style.right.substr(0, scroller.style.right.length-2));
	var mov, destination;

        if (mousedown != 0) {
            to += 10 * mousedown;
            scroller.setAttribute("movex", to);
        } else {
            return;
        }

	mov = (to - right) / 3;

	if (Math.abs(mov) < 0.1) {
                scroller.style.right = to + "px";
		isThumbnailsMoving = false;
		return;
	}
	destination = right + mov;

	scroller.style.right = destination + "px";

	setTimeout("thumbnails_tick()", 50);
}

function thumbnails_moveInstantly(position) {
    var scroller = document.getElementById("thumbnails_inner");
    scroller.style.right = position + "px";
    scroller.setAttribute("movex", position)
}

function convert_date(dt) {
	var dateParams = dt.split("/");
/*	var s = 0;
	s += (Number(dateParams[0]) - 1) * 86400; //Days
	s += (Number(dateParams[1]) - 1) * 2678400; //Months
	s += (Number(dateParams[2]) - 1970) * 31536000; //Years*/
	
	var dateObj = new Date();
	dateObj.setDate(Number(dateParams[0]));
	dateObj.setMonth(Number(dateParams[1])-1);
	dateObj.setFullYear(Number(dateParams[2]));
	s = dateObj.getTime()/1000.0;
	return s;
}

function getDirectChildren(object, tag) {
	var result = new Array();
	var children = object.getElementsByTagName(tag);
	var len = children.length;
	var iRes = 0;
	
	for (i=0;i<len;i++) {
		child = children[i];
		if (child.parentNode == object) {
			result[iRes] = child;
			iRes++;
		}
	}
	return result;
}

function strip_tags(text) {
	var result = "";
	var i, len, inTag=false, inStr=false, inStr2 = false, ch;
	len = text.length;
	for (i=0;i<len;i++) {
		ch = text.charAt(i);
		if (ch == '<' && !inStr && !inStr2)
			inTag = true;
		else if (ch == '"' && inTag)
			inStr = !inStr;
		else if (ch == "'" && inTag)
			inStr2 = !inStr2;
			
		if (!inTag)
			result += ch;
			
		if (ch == '>' && !inStr && !inStr2)
			inTag = false;
	}
	
	return result;
}

function strip_special(text) {
	var result = "";
	var i, j, len, ch;
	text = String(text);
	len = text.length;
	convert_table = new Array();
	
	convert_table[0] = new Array("~", "~");
	convert_table[1] = new Array("&", "~AMP~");
	convert_table[2] = new Array("?", "~QM~");
	convert_table[3] = new Array("'", "~SQ~");
	convert_table[4] = new Array('"', "~DQ~");
	convert_table[5] = new Array('+', "~PL~");
	
	for (i=0;i<len;i++) {
		ch = text.charAt(i);
		for (j=0;j<convert_table.length;j++)
			if (ch == convert_table[j][0])
				ch = convert_table[j][1];
		
		result += ch;
	}

	return result;
}

var isActive = false;
function g_openSubmenu(menu) {
	var subMenu = document.getElementById("submenu_products")
	
	subMenu.style.display = "block";
	isActive = true;
}

function g_closeSubmenu(menu) {
	var subMenu = document.getElementById(menu); 

	if (!isActive)
		subMenu.style.display = 'none';
}

function g_prepareCloseSubmenu(menu) {
	setTimeout('g_closeSubmenu("submenu_products")', 600);
	isActive = false;
}

function p_show(link, id) {
    link.style.display = 'none';
    var f = document.getElementById("full_" + id);
    if (f)
        f.style.display = "block";
}

function p_news_move() {
    var scroller = document.getElementById("news_scroller");
    var target;

    if (scroller.getAttribute("target"))
        target = scroller.getAttribute("target");
    else
        target = 0;

    target -= 50;
    if (target <= 0 - scroller.offsetHeight)
        target = 0;

    scroller.setAttribute("target", target);
    scroller.setAttribute("step", 1);
    p_news_scroll();
}

function p_news_scroll() {
    var scroller = document.getElementById("news_scroller");
    var target = scroller.getAttribute("target");
    var pos = scroller.getAttribute("pos");
    var step = scroller.getAttribute("step");

    pos -= Math.abs(3 - step);
    if (pos < target)
        if (target != 0 || pos > -10)
            pos = target;
    if (pos <= (0 - scroller.offsetHeight) + 25) {
        pos = 25;
    }

    scroller.setAttribute("step", step++);
    scroller.setAttribute("pos", pos);
    scroller.style.top = pos + "px";
    if (pos != target) {
        setTimeout("p_news_scroll();", 40);
    }
}
