// JavaScript Document
var isIE=document.all?true:false;

window.onload = init_page;

ini_run = '';

function init_page(){
	eval(ini_run);
}

function element(id){
	return document.getElementById(id)
}

function is_email(email){
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(email)){
        return true
    }else{
        return false
    }
}

// PNG FIXES

var realSrc='';
var imgs = document.getElementsByTagName('img');
var blankSrc = 'images/pixel.gif';

function fixPNGImages()
{
	var supported = /MSIE/.test(navigator.userAgent) && !/opera/.test(navigator.userAgent) && navigator.platform == "Win32";
	if ( supported )
	{
		for (var i = 0; i < imgs.length; i++)
		{
			realSrc = imgs[i].src;
			if ( /\.png$/.test( realSrc.toLowerCase()) ) fixImage(imgs[i]);
		}
	}
}

function fixImage(element) {
   // get src
	var src = element.src;   
	var height = element.height;
	var width = element.width;

	// set blank image
	element.src = blankSrc;
	// moi modifikatsii
	element.style.width = width;
	element.style.height = height;
	// set filter
	element.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
								 realSrc + "',sizingMethod='scale')";
}

ini_run += "fixPNGImages();";
// END OF PNG FIXES

function getOffsetTop (elm) {

	var mOffsetTop = elm.offsetTop;

	var mOffsetParent = elm.offsetParent;

	while (mOffsetParent) {

		mOffsetTop += mOffsetParent.offsetTop;

		mOffsetParent = mOffsetParent.offsetParent;}

	return mOffsetTop;

}



function getOffsetLeft (elm) {

	var mOffsetLeft = elm.offsetLeft;

	var mOffsetParent = elm.offsetParent;

	while (mOffsetParent) {

		mOffsetLeft += mOffsetParent.offsetLeft;

		mOffsetParent = mOffsetParent.offsetParent;}

	return mOffsetLeft;

}

// Fade an dOpacity

function SetOpacity(obj,val){
	if (isIE && typeof obj.style.filter == 'string') {
		obj.style.filter = 'alpha(opacity='+val+')'
		if (!obj.currentStyle || !obj.currentStyle.hasLayout) {
			obj.style.zoom = 1; // when no layout or cant tell
		}
	}else{
		obj.style.opacity = val/100;
		obj.style['-moz-opacity'] = val/100;
		obj.style['-khtml-opacity'] = val/100;
	}
	
}

function str2arr(str,seperator){
	arr = new Array()
	items = str.split("seperator")
	for(r=0;r<items.length;r++){
		temp = items[r].split("=")
		arr[temp[0]] = temp[1]
	}
	
	return arr
}

function GetOpacity(obj){
	if(isIE && typeof obj.style.filter == 'string'){
		filter = obj.style.filter
		filter = filter.replace("alpha(","")
		filter = filter.replace(")","")
		
		filters = str2arr(filter,",")
		
		opacity = filters['opacity']
		opacity = (opacity == undefined)? 100 : opacity
	}else{
		opacity = 100
	}
	
	return parseFloat(opacity)
}

function positive(num){
	return (num >= 0)? num : num * -1;
}

var fade_working = new Array()

function fade(element_id){
	var args = fade.arguments;
	if(args.length > 2){
		from = (isIE)? GetOpacity(eval(element_id)) : args[1]
		to = args[2]
		fade_working["'"+element_id+"'"] = new Array(from,to)
	}else{
		from = fade_working["'"+element_id+"'"][0]
		to = fade_working["'"+element_id+"'"][1]
	}
	//var round_time = (args > 3)? args[3] : 1; // Seconds
	step = 4
	round_time = 20
	
	var obj = document.getElementById(element_id)
	SetOpacity(obj,from)
	
	if(from != to){
		dif = positive(from - to)
		var incr = 1
		if(from > to){
			from -= (dif < step)? incr : step
		}else if(from < to){
			from += (dif < step)? incr : step
		}
		
		fade_working["'"+element_id+"'"][0] = from
		//return setTimeout('fade(\''+element_id+'\','+from+','+to+')',50)
		return setTimeout('fade(\''+element_id+'\')',round_time)
	}else{
		return from
	}
}

function open_window(url,id,width,height){ // Additional args: 5) left, 6) top.
	var args = open_window.arguments
	
	var left = (args.length > 4)? args[4] : (screen.availWidth/2)-(width/2)
	var top = (args.length > 5)? args[5] : (screen.availHeight/2)-(width/2)
	setup = 'toolbar=no,location=no,directories=no,status=no,left='+left+',top='+top+',menubar=no,width='+width+',height='+height
	setup += 'scrollbars=no,resizable=no'
	
	window.open(url,id,setup)
}

// Input Methods

function input_mouse_over(e,obj){
	var act_on_mouse = true
	
	switch(e.type){
		case "mouseover":
			if(obj.className == 'input' && act_on_mouse){
				obj.className = 'input_over'
			}
			break;
		
		case "mouseout":
			if(obj.className == 'input_over' && act_on_mouse){
				obj.className = 'input'
			}
			break;
		
		case "focus":
			obj.className = 'input_focused'
			break;
		
		case "blur":
			obj.className = 'input'
			break;
	}
}

var expended_item = new Array();

function expend_collapse(me, expended, el){
	if(expended_item[0]){
		expended_item[0].className = 'big_collapsed'
		expended_item[1].className = 'hidden'
	}
	
	if(expended){
		me.className = 'big_collapsed'
		el.className = 'hidden'
	}else{
		me.className = 'big_expended'
		el.className = 'visible'
		
		expended_item[0] = me;
		expended_item[1] = el;
	}
}

// Sections
function MoveSectionToPage(el,url){
	var shadow_distance = 3;
	var h_direction = 'left'
	var wait_time = 3000
	
	mouse_over = true;
	
	var list = '<ol>';
	
	for(page_id in _pages){
		list += '<li><a href="' + url + page_id + '">Move to ' + _pages[page_id] + '</a></li>';
	}
	
	list += '</ol>';
	
	element('divPageList').innerHTML = list
	
	// Adjust Positions;
	var _images = el.getElementsByTagName('img')
	var sender = _images[0]
	
	var ie_padding = (isIE)? 5 : 0;
	
	element('popup_arrow').className = 'visible';
	element('popup_arrow').style.left = (getOffsetLeft(sender) + (sender.offsetWidth / 2) - (element('popup_arrow').offsetWidth / 2) + ie_padding) + 'px'
	element('popup_arrow').style.top = (getOffsetTop(sender) + sender.offsetHeight - 4 + ie_padding) + 'px'
	
	element('divPageList').style.display = ''
	element('divPageList').style.width = (element('divPageList').offsetWidth - 2) + 'px'
	
	element('divPageList').style.left = ((h_direction == 'left')? getOffsetLeft(element('popup_arrow')) - element('divPageList').offsetWidth + element('popup_arrow').offsetWidth + 10 : getOffsetLeft(element('popup_arrow')) - 10) + 'px'
	element('divPageList').style.top = (getOffsetTop(element('popup_arrow')) + element('popup_arrow').offsetHeight - 1) + 'px'
	
	element('divShadow').style.display = ''
	element('divShadow').style.left = (getOffsetLeft(element('divPageList')) + shadow_distance) + 'px'
	element('divShadow').style.top = (getOffsetTop(element('divPageList')) + shadow_distance) + 'px'
	element('divShadow').style.width = element('divPageList').offsetWidth + 'px'
	element('divShadow').style.height = element('divPageList').offsetHeight + 'px'
	
	SetOpacity(element('popup_arrow'),0)
	fade('popup_arrow',0,100)
	
	SetOpacity(element('divPageList'),0)
	fade('divPageList',0,100)
	
	SetOpacity(element('divShadow'),0)
	setTimeout('fade(\'divShadow\',0,30)', 500)
	
	clearTimeout(_timer[0]);
	_timer[0] = setTimeout('CheckMouse()', wait_time)
	
	_timer[1] = setTimeout('mouse_over = false', wait_time - 1)
	
	return false;
}

function HidePopups(){
	fade('popup_arrow',100,0)
	fade('divPageList',100,0)
	fade('divShadow',30,0)
	
	setTimeout('if(mouse_over == false){element(\'popup_arrow\').className = \'hidden\'}else{SetOpacity(element(\'popup_arrow\'), 100)}', 700);
	setTimeout('if(mouse_over == false){element(\'divPageList\').style.display = \'none\'}else{SetOpacity(element(\'divPageList\'), 100)}', 701)
	setTimeout('if(mouse_over == false){element(\'divShadow\').style.display = \'none\'}else{SetOpacity(element(\'divShadow\'), 20)}', 700)
}

var mouse_over = false;
var _timer = new Array()

function ReportMouseEvent(e){
	if(e.type == 'mouseover'){
		mouse_over = true
		clearTimeout(_timer[0]);
		clearTimeout(_timer[1]);
	}else if(e.type == 'mouseout'){
		mouse_over = false
		_timer[0] = setTimeout('CheckMouse()', 2000)
	}
}

function CheckMouse(){
	if(mouse_over != true){
		HidePopups()
	}
}

function file_from_path(path){
	var start = path.lastIndexOf("\\");
	
	if(start >= 0){
		path = path.substring(start + 1,path.length)
	}
	
	return path
}

function file_extension(path){
	var start = path.lastIndexOf(".");
	return path.substring(start + 1,path.length).toLowerCase()
}

function check_extension(path){
	var ext = file_extension(path)
	
	if(ext != 'jpg' && ext != 'jpeg' && ext != 'bmp' && ext != 'png' && ext != 'gif'){
		alert("This file type is invalid.\nValid picture types are: JPG, JPEG, GIF, PNG, and BMP.\nFile type you selected is: " + ext.toUpperCase())
		return false;
	}
	
	return true;
}

function days_in_month(month,year){
    var dd = new Date(year, month, 0);
    return dd.getDate();
}

function fill_in_days(el, month, year){
    var days = days_in_month(month, year)
    var selected_day = el.value
    
    ClearElements(el)
    
    for(i = 1; i <= days; i++){
        addElement(el, i, i, false)
    }
    
    el.value = selected_day
}

function set_date_value(el, year,month,day){
    el.value = year + '-' + month + '-' + day
}

// SELECT ELEMENT

// Adds option to <select> element
// Arguments: Select element, String Option Name, Option Value, Bool (should this option be selected or not?)
function addElement(objSelCtrl, strText, strValue, selected){
	var args = addElement.arguments;
	var objOptions = objSelCtrl.options;
	var intOptionLength = (objSelCtrl.options.length <= 0)? 0 : objSelCtrl.options.length //IE for Mac 4.5 sets length to -1 if list is empty
	
	objOptions[intOptionLength] = new Option(strText, strValue);

	var argv = addElement.arguments;
	var argc = addElement.arguments.length;
	if(argc > 3 && argv[3] == true){
		objOptions[intOptionLength].selected = argv[3]
		if(args.length > 4){
			objOptions[intOptionLength].style.color = args[4]
		}
		if(args.length > 5){
			objOptions[intOptionLength].style.background = args[5]
		}
	}
}

// Removes all options from <select> element
// Arguments: Select element
function ClearElements(what){var walength = what.options;for(i in walength){what.options[i] = null}}

