/**
function getBaseURL() {
    var url = location.href;  // entire url including querystring - also: window.location.href;
    var baseURL = url.substring(0, url.indexOf('/', 14));

    if (baseURL.indexOf('http://localhost') != -1) {
        var url = location.href;  // window.location.href;
        var pathname = location.pathname;  // window.location.pathname;
        var index1 = url.indexOf(pathname);
        var index2 = url.indexOf("/", index1 + 1);
        var baseLocalUrl = url.substr(0, index2);

        return baseLocalUrl + "/";
    } else {
        // Root Url for domain name
        return baseURL + "/";
    }
}
**/

/**
 *  *  extremely faster than Prototype.js event observe
 *   *  http://kpumuk.info/javascript/javascript-optimization-part-3-attaching-events/
 *    */
function addEvent(element, myevent, myfunction) {

    try {
        if(typeof(element) == "undefined") {
            return false;
        }
        if(element) {
            if (element.attachEvent) { // IE
                element.attachEvent("on" + myevent, myfunction);
            } else if (element.addEventListener) { // Firefox
                element.addEventListener(myevent, myfunction, false);
            }
        }
    } catch(e) {
        // do nothing
	}
}

function isNumeric(sText) {
   var ValidChars = "0123456789%c\€\$,./-:\n\t";
   var Char;

    for (i = 0; i < sText.length; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            return false;
        }
   }
   return true;
}

/**
 *	Disable form. This is used when there are no more credits to send SMS
 */
function disable_form(id) {
	if($(id)) {
		$(id).disable();
	    $(id).setStyle({'opacity':0.5});
		$(id).select('a').each(function(a) {
			a.setAttribute('href', 'javascript:;');
			a.observe('click', function() { return false });
		});
	}
}

/**
 *  Check that the message has a specified number of chars 
 */
function calculate_length(id, max, gsm) {
    
	var tmp = $F(id);
	if(gsm === true) {
	    tmp = tmp.sub('Ά','Α');
		tmp = tmp.sub('Έ','Ε');
		tmp = tmp.sub('Ή','Η');
		tmp = tmp.sub('Ί','Ι');
		tmp = tmp.sub('Ό','Ο');
		tmp = tmp.sub('Ύ','Υ');
		tmp = tmp.sub('Ώ','Ω');
	}

	var length = tmp.length;
    if(length > max) {
        $(id).value = tmp.substring(0, max);
	} else {
		$(id).value = tmp;
	}
    return true;
}

document.observe("dom:loaded", function() {

	var prefix = '/sms';

	var parts = location.href.split('/');


	if(parts[4] == "admin") {
		var url = "/admin/"  + parts[5] + "/";

	} else if(parts[5] == "register") {	
	
		var url = "/" + parts[4] + "/" + parts[5];

	} else if(parts[5] == "contact") {
		
		var url = "/" + parts[4] + "/" + parts[5];

	} else {
		var url = "/" + parts[4] + "/";
	}
	
	// special	
	if(url == "//") {
		url = "/batchsms/add";
	}

	url = prefix + url;

	$$('ul.sidebar > li > a').each(function(a) {
		if(a.getAttribute('href').startsWith(url)) {
			a.addClassName('selected');
			throw $break;
		}
	});

	var nav_selected = false;
	$$('ul#nav > li > a').each(function(a) {
		if(a.getAttribute('href').startsWith(url)) {
			a.addClassName('selected');
			nav_selected = true;
			throw $break;
		}
	});
	if(nav_selected == false) {
		if($('nav_settings')) {
			$('nav_settings').addClassName('selected');
		}
	}

	/**
	 *	Foculs on first input field of form
	 */
	 $$('form').each(function(myform) {
        myform.getElementsBySelector('textarea', 'input','select').each(function(input) {
            if(input.id && input.type != "hidden" && input.style.display != "none") {
                input.focus();
                throw $break;
            }
        });
    });

	/**
	 *	All awesome buttons inside forms trigger submit
	 */
	$$('form a.awesome').each(function(a) {
		if(!a.hasClassName('blue')) {
			a.observe('click', function() {
				a.up('form').submit();
			});
		}
	});

	/**
	 *	align td right
	 */
	$$('td').each(function(td) {
		var tmp = td.innerHTML.stripScripts().stripTags().strip();
		if(!tmp.blank()) {
			if(isNumeric(tmp)) {
				td.addClassName('number');
			}
		}	
	});	

	smart_tables();

	nav_menu();

	current_title();
});

/**
 *  highlight table on mouse over
 */
function smart_tables() {
    try {

	var i = 0;
    $$('tr').each(function(row) {
		if(i++ % 2 === 0) {
			row.addClassName('even');
		}
        addEvent(row, 'mouseover', function() {
            row.addClassName('highlight');
        });
        addEvent(row, 'mouseout', function() {
            row.removeClassName('highlight');
        });

        /**
 *          *  1. find edit link or view link for each row
 *                   *  2. foreach td in row, if there is no link inside, monitor onClick event and visit link automatically
 *                            */
        var finallink;

        row.select('td.actions a').each(function(link) {
            if(link) {
                if(link.href) {
                    if(link.href.include('/view/')) {
                        finallink = link.href;
                        throw $break;
                    } else if(link.href.include('/edit/')) {
                        finallink = link.href;
                        throw $break;
                    } else if(link.href.include('/download/')) {
                        finallink = link.href;
                        throw $break;
                    }
                }
            }
        });

        if(finallink) {
            addEvent(row, 'click', function(e) {
                var target;
                if(e.target) {
                    target = e.target.toString();   // Everything else
                } else {
                    target = e.srcElement.toString();   // IE
                }
				if(!target.include("/delete/")) {
                    window.location = finallink;
                }
            });
        }
    });

    } catch(e) {

    }
}

function closeModalbox() {
    if(Modalbox && $('closeModalbox')) {
	    // hide the modal box  
    	Modalbox.hide();
	}
}

function nav_menu() {

        $$('#nav li').each(function(li) {
            addEvent(li, "mouseover", function() {
                li.addClassName("sfhover");
            });
            addEvent(li, "mouseout", function() {
                li.removeClassName("sfhover");
            });
        });
	
	/**
    $$('#nav a').each(function(link) {
        if(link.href.endsWith('/add') || link.href.endsWith('/importVcf')) {
            link.addClassName('nav_add');
        }
        if(link.href.include('/edit/')) {
            link.addClassName('nav_edit');
        }
    });
	**/
}

function getBaseURL() {
    var url = location.href;  // entire url including querystring - also: window.location.href;
    var baseURL = url.substring(0, url.indexOf('/', 14));

    if (baseURL.indexOf('http://localhost') != -1) {
        url = location.href;  // window.location.href;
        var pathname = location.pathname;  // window.location.pathname;
        var index1 = url.indexOf(pathname);
        var index2 = url.indexOf("/", index1 + 1);
        var baseLocalUrl = url.substr(0, index2);

        return baseLocalUrl + "/";
    } else {
        // Root Url for domain name
		return baseURL + "/";
    }
}

function current_title() {
    var baseURL = getBaseURL();

    var url = location.href.replace(baseURL, '');

    if(url.include(':')) {
        var temporary = '';
        url.split('/').each(function(element) {
            if(!element.include(':')) {
                temporary += '/' + element;
            }
        });
        url = temporary;
    } else {
        url = '/' + url;
    }

    var tmp = url.split("/");

    var controller = (tmp[1] === "admin" ? "/" + tmp[1] + "/" + tmp[2] : "/" + tmp[1]);


    if(controller != "/") {
        $$('ul#nav > li > a').each(function(a) {
            if(a.readAttribute('href').include(controller)) {
                a.up('li').addClassName('selected');
                throw $break;
            }
        });
    }

	/**
    if($('current_header')) {
		var decoded_url = decodeURI(url);
	
		if(baseURL.include("/sms/")) {
			decoded_url = "/sms" + decoded_url;
		}

        $$('ul#nav a').each(function(a) {
			if(decoded_url  == a.readAttribute('href')) {
				var stack = [];
				stack.push(a.innerHTML.strip());

				while(a.up('li')) {
					a = a.up('li').up('li').down('a');
					alert(a);
//					stack.push(a.innerHTML.strip());
					alert(typeof(a.up('li')));
				}
				console.log(stack);

				throw $break;
			}
		});
	
        $$('ul#nav > li > ul a').each(function(a) {
            if(decodeURI(url) == a.readAttribute('href')) {
                var parent = a.up('li').up('ul').up('li').down('a').innerHTML;
                if(parent) {
                    var flag = true;
                    $$('h2').each(function(e) {
                        if(e.innerHTML.startsWith(parent)) {
                            flag = false;
                        }
                    });

                    if(flag === true) {
                        $('current_header').update(' &raquo; ' + parent + ' &raquo; ' + a.innerHTML);
                    } else {
                        $('current_header').update(' &raquo; ' + a.innerHTML);
                    }
                } else {
                    $('current_header').update(' &raquo; ' + a.innerHTML);
                }

                var tmp = document.title.split('|');
                document.title = tmp[0] + ' - ' + a.innerHTML + ' | ' + tmp[1];
                throw $break;
            }
        });
    }
	**/
}

